變量是一個很重要的概念,無論是bash腳本還是其他語言,都是如此。在bash中,創建變量很簡單,給變量一個名稱即可。默認情況下,變量的值為空。我們可以通過等號為變量賦值。需要注意的是,變量和變量的值不是一個概念。當給定變量一個名稱后,例如myvar,我們需要通過$取得變量的值,即$myvar。使用echo輸出變量的值。
輸出變量的值的格式為:echo $myvar 或者 echo ${myvar}
使用變量的時候,需要注意以下幾點:
1. 給變量賦值的時候,如果值包含空格,需要用單引號或者雙引號包起來,否則會引起錯誤
2. 給變量賦值的時候,如果使用單引號,那么單引號里面的變量就不會解析成真正的值。使用雙引號則可以
3. 可以將一個命令執行的結果賦給一個變量。格式為:myvar=$(command) 或者 `comand`。值得注意的是,務必要將$()和${}的用途分開
4. 變量的擴增,即將新的內容增加到變量原來的值上去。格式為"$變量名稱" 或 ${變量} 擴增內容
5. 使用export將變量變成環境變量,使得bash子進程可以使用變量。請看下圖:
6. 判斷變量是否未設置,如果未設置則用-后面的內容賦值。語法為:var2=${var1-hellovar1}(若var1未設置,那么將hellovar1賦值給var2,否則將var1的值賦給var2)。需要注意的是,如果var1設置為空值了,那么也算是賦值了
7. 判斷變量是否未設置或者設置為空值,如果未設置或者設置為空值則用-后面的內容賦值。語法為:var2=${var1:-hellovar1}。如下圖,注意與第六點區分開
關於第6、7的更多用法與規則,參考下表(出自鳥哥Linux私房菜:http://vbird.dic.ksu.edu.tw/linux_basic/0320bash_2.php):
變量配置方式 | str 沒有配置 | str 為空字符串 | str 已配置非為空字符串 |
var=${str-expr} | var=expr | var= | var=$str |
var=${str:-expr} | var=expr | var=expr | var=$str |
var=${str+expr} | var= | var=expr | var=expr |
var=${str:+expr} | var= | var= | var=expr |
var=${str=expr} | str=expr var=expr |
str 不變 var= |
str 不變 var=$str |
var=${str:=expr} | str=expr var=expr |
str=expr var=expr |
str 不變 var=$str |
var=${str?expr} | expr 輸出至 stderr | var= | var=$str |
var=${str:?expr} | expr 輸出至 stderr | expr 輸出至 stderr | var=$str |