shell編程一:初識shell

  Shell腳本同Linux系統中的其它文件一樣,可以不使用擴展名。但爲了方便識別,通常建議Bash腳本文件名以sh結尾,Tcsh腳本文件以csh結尾。

  

vim bash.sh
創建一個腳本文件
#!/bin/bash
上面是一個Bash腳本的開頭,這一行的內容告訴系統應該使用哪一種Shell來執行這個腳本,或者使用哪一種Shell來解釋執行這個腳本中的內容。這裏表示使用Bash。

通常以#開頭的都是註釋,但這種註釋只能註釋一行。


腳本的執行方式:

1.使用bash命令執行腳本     

bash bash.sh
2.使用點號“.”執行腳本

. bash.sh
3.設置腳本爲可執行

chmod u+x bash.sh
./bash.sh
前面兩種一般用於執行系統腳本,用戶自己編寫的腳本一般採用第三種方式進行執行。

接受用戶輸入:

使用read命令將用戶輸入保存到變量中,然後讀取變量獲取用戶輸入

#!/bin/bash
#This is a hello shell
echo "hello"

echo -n "input you name"
read -a name
#輸出所有的元素
echo ${name[*]}

shell中的變量:

系統中預先定義的變量
$0:保存當前線程或腳本的名稱
$*:保存傳遞給腳本或進程的所有參數
$$:當前進程或腳本的PID號
$!:後臺運行的最後一個進程的PID號
$?:用於返回上一條命令是否執行成功。如果成功返回0,否則返回非零數字。

用戶自定義變量:
 由於變量沒有具體的數據類型,因此在定義變量時可以不必定義其類型,直接賦值即可使用。在Shell中變量名稱可以由大寫字母、小寫字母、下劃線、數字等符號組成。

變量的作用域:
1.除非使用了export命令,否則在腳本中定義的變量(包括函數中定義的變量)作用域是整個腳本。
2.在命令提示符中定義的變量和使用export定義的變量都是全局變量。全局變量可以在當前用戶的任何腳本命令中引用。

下面是一個例子:
#!/bin/bash
#2016/12/29

RAN=`expr $RANDOM % 10 `
RAN=`expr $RAN + 1`
echo "This is a guess game!"
echo "range is 1-10!"

while true
 do
 echo -n "please input you guess number:"
 read num
 if [ $num -lt 1 ] || [ 10 -lt $num ]
  then
   echo "out of range!"
   continue
 fi
if [ $num = $RAN ]
 then
  echo "you get it!"
  unset num RAN
  exit 0
fi

if [ $num -lt $RAN ]
 then
  echo "you input is so small!"
else
 echo "you input is so big"
fi
done
需要注意的是:
1.if後面一定要有空格,兩邊的中括號和中間的內容也要有空格
2.無論是引用變量還是變量之間的運算都要使用變量引用符“$”
3.expr前面的是Tab鍵的‘~’原來的形式而不是引號
4.當一個變量完成其作用不會再使用時應該將其從系統中清除(使用unset命令),以釋放其佔用的系統資源。


發佈了29 篇原創文章 · 獲贊 7 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章