shell環境中變量有三種類型:
a、 環境變量;可以在shell腳本中直接利用“$環境變量名稱”的形式引用。
b、 用戶自定義變量;不需要事先定義,通常情況下,使用變量的時候直接對變量賦初值。變量名稱=變量初始值(注意:變量名稱的要求——首字符必須是字母,可以用下劃線,但是不能有標點符號和空格,不能使用shell裡的關鍵字)
c、 系統全局變量;代表了特定含義,不能被用戶修改。一般來說,主要的全局變量包括以下幾個:
$#:執行shell腳本時,命令行參數個數,不包括腳本本身。
$?:執行上一條shell命令的返回值(退出狀態,大部分命令執行成功返回0,失敗返回1,不過也有一些其他命令返回其他值標識其他錯誤)。
$0:shell腳本程序自身的名稱。同時,$1代表shell命令行中第一個參數,$2代表第二個參數,$3代表第三個參數,以此類推。
$*:傳遞給腳本或函數的所有參數。
$$:當前shell進程ID,就是當前腳本所在的進程ID。
要在腳本中使用變量則是利用“$變量名稱”的方法。
Eg.創建一個腳本計算兩數之和
值得注意的一點:在使用expr進行運算時,運算符兩邊要記得加空格。
結果是:
一開始出錯如下:
原因:這個腳本文件需要除了腳本本身以外的參數,運行腳本的時候沒有輸入參數。
$* 和 $@的區別:
$* 和 $@ 都表示傳遞給函數或腳本的所有參數,不被雙引號(" ")包含時,都以"$1" "$2" … "$n" 的形式輸出所有參數。 但是當它們被雙引號(" ")包含時,"$*" 會將所有的參數作為一個整體,以"$1 $2 … $n"的形式輸出所有參數;"$@" 會將各個參數分開,以"$1" "$2" … "$n" 的形式輸出所有參數。
Eg.