變量是任何一種編程語(yǔ)言都必不可少的組成部分,變量用來(lái)存放各種數(shù)據(jù)。腳本語(yǔ)言在定義變量時(shí)通常不需要指明類(lèi)型,直接賦值就可以,Shell變量也遵循這個(gè)規(guī)則。每一個(gè)變量的值都是以字符串的形式存儲(chǔ)。
1、變量名的定義
變量名定義需要注意以下幾點(diǎn):
變量名由數(shù)字、字母、下劃線組成;
必須以字母或者下劃線開(kāi)頭;
不能使用Shell里的關(guān)鍵字(如,$,#,?等,通過(guò)help命令可以查看保留關(guān)鍵字)。
2、變量的賦值
賦值“=”左右不能有空格。
變量值可以加單引號(hào)、雙引號(hào)、或者不加引號(hào), 如果變量值包含了空格、或tab等空白符號(hào),那么就必須使用引號(hào)包圍起來(lái)。其中加單引號(hào)的變量值,輸出時(shí),直接將變量值當(dāng)做一串字符串輸出,不關(guān)心變量值中是否存在變量和命令。而加雙引號(hào)的變量值,輸出時(shí)會(huì)先解析里面的變量和命令,按照解析后的結(jié)果進(jìn)行輸出。
變量值可以是一個(gè)命令執(zhí)行的結(jié)果,使用反引號(hào)和$()的方式,可以將命令執(zhí)行結(jié)果賦值給變量。
3、變量的使用
使用一個(gè)定義過(guò)的變量,只要在變量名前面加美元符號(hào)$即可,變量名可以使用{ }包圍起來(lái),也可不使用{ }。
舉例說(shuō)明(為了方便,我們直接在shell環(huán)境終端進(jìn)行舉例演示變量的使用,不再寫(xiě)入腳本,其與在腳本中使用方法一致)。
1)變量值無(wú)空格
var=value
使用echo輸出變量var,echo $var或者echo ${var},如圖:
也可以加上單引號(hào)或者雙引號(hào):
var='value'或var="value":
2)變量值有空格
var='value 0'或var="value 0":
3)將命令執(zhí)行結(jié)果賦值給變量
首先建立一個(gè)test.txt文件,輸入內(nèi)容為“my test!!”:
使用反引號(hào)方式包括命令“cat test.txt”,將test.txt中內(nèi)容賦予變量var:
使用$()方式賦值給var:
4)變量中引用變量或者命令的情況
var0=123;
使用單引號(hào)定義var1的值:var1='var0 =${var0}';
使用雙引號(hào)定義var1的值:var2="var0 =${var0}";
看執(zhí)行結(jié)果:
可以看出var1的值直接當(dāng)做字符串輸出,而var2的值,經(jīng)過(guò)解析變量中的變量var0之后進(jìn)行才輸出。
4、變量的修改
變量的修改就比較簡(jiǎn)單了,直接給定義后的變量二次賦值就可以了。
5、變量的刪除
刪除一個(gè)定義過(guò)得變量,使用unset命令。
6、將變量設(shè)置為只讀變量
也可以將變量設(shè)置為只讀模式,不允許修改,使用readonly命令。設(shè)置為只讀變量后,不能用unset刪除變量。如果還是用該變量,需要重啟新的終端操作。
可以看到使用readonly命令之后,在此修改var變量,沒(méi)有修改成功。