變量是一個(gè)很重要的概念杯巨,無論是bash腳本還是其他語言,都是如此努酸。在bash中服爷,創(chuàng)建變量很簡(jiǎn)單,給變量一個(gè)名稱即可获诈。默認(rèn)情況下仍源,變量的值為空。我們可以通過等號(hào)為變量賦值舔涎。需要注意的是笼踩,變量和變量的值不是一個(gè)概念。當(dāng)給定變量一個(gè)名稱后亡嫌,例如myvar嚎于,我們需要通過$取得變量的值,即$myvar挟冠。使用echo輸出變量的值于购。
輸出變量的值的格式為:echo $myvar 或者 echo ${myvar}
使用變量的時(shí)候,需要注意以下幾點(diǎn):
-
給變量賦值的時(shí)候圃郊,如果值包含空格价涝,需要用單引號(hào)或者雙引號(hào)包起來,否則會(huì)引起錯(cuò)誤
-
給變量賦值的時(shí)候持舆,如果使用單引號(hào)色瘩,那么單引號(hào)里面的變量就不會(huì)解析成真正的值。使用雙引號(hào)則可以
-
可以將一個(gè)命令執(zhí)行的結(jié)果賦給一個(gè)變量逸寓。格式為:myvar=$(command) 或者
comand
居兆。值得注意的是,務(wù)必要將$()和${}的用途分開
-
變量的擴(kuò)增竹伸,即將新的內(nèi)容增加到變量原來的值上去泥栖。格式為"$變量名稱" 或 ${變量} 擴(kuò)增內(nèi)容
-
使用export將變量變成環(huán)境變量簇宽,使得bash子進(jìn)程可以使用變量。請(qǐng)看下圖:
-
判斷變量是否未設(shè)置吧享,如果未設(shè)置則用-后面的內(nèi)容賦值魏割。語法為:var2=${var1-hellovar1}(若var1未設(shè)置,那么將 hellovar1賦值給var2钢颂,否則將var1的值賦給var2)钞它。需要注意的是,如果var1設(shè)置為空值了殊鞭,那么也算是賦值了
-
判斷變量是否未設(shè)置或者設(shè)置為空值遭垛,如果未設(shè)置或者設(shè)置為空值則用-后面的內(nèi)容賦值。語法為:var2=${var1:-hellovar1}操灿。如下圖锯仪,注意與第六點(diǎn)區(qū)分開
關(guān)于第6、7的更多用法與規(guī)則趾盐,參考下表(出自鳥哥Linux私房菜)
變量配置方式 | 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 |