變量是一個很重要的概念,不管是bash腳本仍是其餘語言,都是如此。在bash中,建立變量很簡單,給變量一個名稱便可。默認狀況下,變量的值爲空。咱們能夠經過等號爲變量賦值。須要注意的是,變量和變量的值不是一個概念。當給定變量一個名稱後,例如myvar,咱們須要經過$取得變量的值,即$myvar。使用echo輸出變量的值。php
輸出變量的值的格式爲:echo $myvar 或者 echo ${myvar}linux
使用變量的時候,須要注意如下幾點:bash
1. 給變量賦值的時候,若是值包含空格,須要用單引號或者雙引號包起來,不然會引發錯誤spa
2. 給變量賦值的時候,若是使用單引號,那麼單引號裏面的變量就不會解析成真正的值。使用雙引號則能夠3d
3. 能夠將一個命令執行的結果賦給一個變量。格式爲:myvar=$(command) 或者 `comand`。值得注意的是,務必要將$()和${}的用途分開blog
4. 變量的擴增,即將新的內容增長到變量原來的值上去。格式爲"$變量名稱" 或 ${變量} 擴增內容進程
5. 使用export將變量變成環境變量,使得bash子進程可使用變量。請看下圖:ci
6. 判斷變量是否未設置,若是未設置則用-後面的內容賦值。語法爲:var2=${var1-hellovar1}(若var1未設置,那麼將hellovar1賦值給var2,不然將var1的值賦給var2)。須要注意的是,若是var1設置爲空值了,那麼也算是賦值了字符串
7. 判斷變量是否未設置或者設置爲空值,若是未設置或者設置爲空值則用-後面的內容賦值。語法爲:var2=${var1:-hellovar1}。以下圖,注意與第六點區分開get
關於第六、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 |