什麼是變數呢?從字面上來看就是可以變的量。舉個例子,我們小時候都做過數學的應用題,經常定義 x 的值是某個數,如果換了一道題,還是定義 x 的值,但是 x 的值就不和第一道題相同了,這個 x 就是變數。
變數是計算機記憶體的單元,其中存放的值可以改變。當 Shell 指令碼需要儲存一些資訊時,如一個檔名或一個數位,就把它存放在一個變數中。
每個變數都有一個名字,所以很容易參照它。變數可以客製化使用者本身的工作環境。使用變數可以儲存有用資訊,使系統獲知使用者相關設定。變數也可以用於儲存暫時資訊。
那麼,應該如何設定變數呢?其實非常簡單,命令如下:
[[email protected] ~]# name=sc
#定義變數name的值
[[email protected] ~]# echo $name、
sc
#查詢變數的值
在定義變數時,有一些規則需要遵守。
1) 變數名可以由字母、數位和下畫線組成,但是不能以數位開頭。如果變數名是"2name",則是錯誤的。
2) 在 Bash 中,變數的預設型別都是字串型,如果要進行數值運算,則必須指定變數型別為數值型。比如:
[[email protected] ~]# aa=1+2
[[email protected] ~]# echo $aa
1+2
看到了吧,變數 aa 的值不是"3",而是"1+2"。在 Bash 中,變數型別是字串型,所以認為"1+2"只是一個字串,而不會進數值運算(數值運算方法會在後續章節中介紹)。
3) 變數用等號"="連線值,"="左右兩側不能有空格。這是 Shell 語言特有的格式要求。在絕大多數的其他語言中,"="左右兩側是可以加入空格的。但是在 Shell 中命令的執行格式是"命令 [選項] [引數]",如果在"="左右兩側加入空格,那麼 Linux 會誤以為這是系統命令,是會報錯的。
4) 變數值中如果有空格,則需要使用單引號或雙引號包含,如 test="hello world!"。雙引號括起來的內容"$"和反引號者都擁有特殊含義,而單引號括起來的內容都是普通字元。
5) 在變數值中,可以使用跳脫符""。
6) 如果需要増加變數值,那麼可以進行變數疊加。 例如:
[[email protected] ~]#test=123
[[email protected] ~]#test="$test"
456
[[email protected] ~]# echo $test
123456
#疊加變數test,變數值變成了123456
[[email protected] ~]#test=${test}789
[[email protected] ~]# echo $test
123456789
#再疊加變數test,變數值變成了123456789
變數疊加可以使用兩種格式:"$變數名"或 ${變數名}。
7) 如果要把命令的執行結果作為變數值賦予變數,則需要使用反引號或 $() 包含命令。例如:
[[email protected] ~]# test=$(date)
[[email protected] ~]# echo Stest
2013年10月21日 星期一20:27:50 CST
8) 環境變數名建議大寫,便於區分。