設 file=/dir1/dir2/dir3/my.file.txt
變量的截斷操作
命令 |
意義 |
結果 |
${file#*/} |
去掉第一個 / 及左邊的字符串 |
dir1/dir2/dir3/my.file.txt |
${file##*/} |
去掉最後一個 / 及左邊的字符串 |
my.file.txt |
${file#*.} |
去掉第一個 . 及左邊的字符串 |
file.txt |
${file##*.} |
去掉最後一個 . 及左邊的字符串 |
txt |
${file%/*} |
去掉最後一個 / 及右邊的字符串 |
/dir1/dir2/dir3 |
${file%%/*} |
去掉第一個 / 及右邊的字符串 |
空串 |
${file%.*} |
去掉最後一個 . 及右邊的字符串 |
/dir1/dir2/dir3/my.file |
${file%%.*} |
去掉第一個 . 及右邊的字符串 |
/dir1/dir2/dir3/my |
變量字符串提取
命令 |
意義 |
結果 |
${file:0:5} |
提取第0個字符開始的連續5個字符 |
/dir1 |
${file:5:5} |
提取第5個字符開始的連續5個字符 |
/dir2 |
變量字符串替換
命令 |
意義 |
結果 |
${file/dir/path} |
將第一個 dir 替換爲path |
/path1/dir2/dir3/my.file.txt |
${file//dir/path} |
將全部 dir 替換爲path |
/path1/path2/path3/my.file.txt |
${#file} |
計算出變量 file 值的長度 |
27 |
變量值的長度
命令 |
意義 |
結果 |
${#file} |
計算出變量 file 值的長度 |
27 |
針對變量狀態賦值
變量的狀態有:空值、非空值和未設定
命令 |
意義 |
${file-my.file.txt} |
若$file沒有設定,則使用my.file.txt作返回值。(空值及非空值時不作處理) |
${file:-my.file.txt} |
若$file沒有設定或爲空值,則使用my.file.txt作返回值。(非空值時不作處理) |
${file+my.file.txt} |
若$file設爲空值或非空值,均使用my.file.txt作返回值。(沒設定時不作處理) |
${file:+my.file.txt} |
若$file爲非空值,則使用my.file.txt作返回值。(沒設定及空值時不作處理) |
${file=my.file.txt} |
$file未設定,則使用my.file.txt作返回值,同時將$file 賦值爲 my.file.txt。(空值及非空值時不作處理) |
${file:=my.file.txt} |
$file未設定或爲空值,則使用 my.file.txt 作返回值,同時將 $file 賦值爲my.file.txt。(非空值時不處理) |
${file?my.file.txt} |
$file未設定時將 my.file.txt 輸出至STDERR(空值、非空不處理) |
${file:?my.file.txt} |
$file未設定或爲空值時將 my.file.txt 輸出至STDERR(非空不處理) |
數組運算
A=(a b c def)
命令 |
意義 |
結果 |
${A[@]}或${A[*]} |
得到數組全部值 |
a b c def |
${A[0]} |
得到數組中的第一個元素 |
a |
${A[3]} |
得到數組中的第四個元素 |
def |
${#A[@]}或${#A[*]} |
數組元素個數 |
4 |
${#A[0]} |
數組第一個元素的長度 |
1 |
${#A[3]} |
數組第四個元素的長度 |
3 |