變量和函數(shù)是編程語言的基礎(chǔ)組成部分朽缎。
變量
默認(rèn)變量
默認(rèn)變量指的是shell運(yùn)行已經(jīng)約定的變量表達(dá)形式,常用的有
變量 | 說明 |
---|---|
$0 | 執(zhí)行腳本名 |
$n | n表示第幾個參數(shù)蔚舀,$1表示第一個參數(shù) |
$# | 傳遞給腳本或函數(shù)的參數(shù)個數(shù) |
$* | 傳遞給腳本或函數(shù)的所有參數(shù) |
$? | 上個命令的退出狀態(tài)饵沧,或函數(shù)的返回值 |
字符串
賦值
字符串的賦值分為兩種,一種是直接賦值赌躺,例如
name="ketty"
另外一種是利用命令結(jié)果賦值狼牺,例如
files=`ls`
字符串處理
- 獲取字符串長度
${#name}
- 截取字符串
${var#*//} # 從左邊開始,刪除第一個//號及左邊的所有字符
${var##*/} # 從左邊開始礼患,刪除最后(最右邊)一個/號及左邊的所有字符
${var:0:5} # 從左邊第一個字符開始是钥,截取長度5
${var:7} # 從左邊第8個字符開始,一直到結(jié)束
${var%/*} # 從右邊開始缅叠,刪除第一個/號及右邊的字符
${var%%/*} #從右邊開始悄泥,刪除最后(最左邊)一個 / 號及右邊的字符
${var:0-7:3} # 從右邊第7個字符開始,截取長度3
${var:0-7} # 從右邊第7個字符開始肤粱,一直到結(jié)束
- 字符串拼接
name=${xing}_${ming}
環(huán)境變量
直接執(zhí)行一個腳本文件是在一個子shell中運(yùn)行的弹囚,而source則是在當(dāng)前shell環(huán)境中運(yùn)行的,所以當(dāng)需要設(shè)置環(huán)境變量時需要使用source set_env.sh
而不是./set_env.sh
领曼。
數(shù)組
- 定義
array_name=(value0 value1 value2 value3)
- 讀取數(shù)組元素
${array_name[n]}?
- 獲取數(shù)組長度
${#array_name[@]}
- 獲取數(shù)組內(nèi)容
${array_name[@]}
可以看出鸥鹉,array_name[@]
表示數(shù)組,array_name
表示字符串庶骄。
函數(shù)
定義和調(diào)用
function 函數(shù)名()
{
action
}
函數(shù)名 參數(shù)列表
入?yún)?/h3>
函數(shù)的入?yún)⒖梢詤⒖忌厦娴?strong>默認(rèn)變量小節(jié)毁渗。
參考文檔
[1]: Shell特殊變量:Shell $0, $#, $*, $@, $?, $$和命令行參數(shù)
[2]: shell腳本字符串截取的8種方法
[3]: 利用shell腳本添加環(huán)境變量