在Linux系統(tǒng)中進(jìn)行日常運(yùn)維或者是編寫(xiě)腳本時(shí),變量是再熟悉不過(guò)的了,但這些變量都有哪些類型,具體的用法又有哪些差異呢?本文整理分享給大家:
一、bash變量類型:
本地變量
局部變量
環(huán)境變量
位置變量
特殊變量(內(nèi)置)
二、本地變量:
varname=value:作用域?yàn)檎麄€(gè)bash進(jìn)程可以使用;
變量命名規(guī)范:
1. 只能含字母、數(shù)字和下劃線,并且以字母和下劃線開(kāi)頭
2. 最好不要跟系統(tǒng)已有的環(huán)境變量重名
3. 見(jiàn)名知意
三、局部變量:
local varname=value:作用域?yàn)楫?dāng)前代碼段;
四、環(huán)境變量:
作用域?yàn)楫?dāng)前shell進(jìn)程及其子進(jìn)程,不能影響到其父進(jìn)程;
export varname=value “導(dǎo)出”,如果變量已經(jīng)定義可以只是用變量名 export varname,即
1. export varname=value
2. varname=value
export varname
腳本在執(zhí)行命令時(shí)會(huì)啟動(dòng)一個(gè)子shell環(huán)境變量:
系統(tǒng)自動(dòng)執(zhí)行的腳本(非命令行啟動(dòng))就需要自我定義需要的個(gè)環(huán)境變量;
五、位置變量:
$1,$2,$3,……
cat first.sh test.txt hello
$1: first.sh
$2: test.txt
$3: hello
shift:踢掉參數(shù)
shift n:踢掉n個(gè)參數(shù),默認(rèn)踢掉一個(gè)參數(shù)
六、特殊變量:
$?:上一個(gè)命令執(zhí)行狀態(tài)的返回值:
程序執(zhí)行可能有兩種返回值:
1. 程序執(zhí)行結(jié)果
2. 程序狀態(tài)返回嗎(0-255)
0 則為執(zhí)行正確
1-255 則執(zhí)行出錯(cuò)(1,2,127系統(tǒng)預(yù)留);
$#:獲取當(dāng)前shell命令行中參數(shù)的總個(gè)數(shù)
$*:獲取當(dāng)前shell的所有參數(shù) “$1 $2 $3 …,受IFS控制
$@:這個(gè)程序的所有參數(shù) “$1″ “$2″ “$3″ “…”,不受IFS控制
$0 獲取當(dāng)前執(zhí)行的shell腳本的文件名
$n 獲取當(dāng)前執(zhí)行的shell腳本的第n個(gè)參數(shù)值,n=1..9
$$ 獲取當(dāng)前shell的進(jìn)程號(hào)(PID)
$! 執(zhí)行上一個(gè)指令的PID
新聞熱點(diǎn)
疑難解答
網(wǎng)友關(guān)注