歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> shell中${}的妙用

shell中${}的妙用

日期:2017/3/1 14:14:48   编辑:SHELL編程
shell中${}的妙用 1. 截斷功能 ${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 記憶的方法為: [list]#是去掉左邊, ##最後一個 %是去掉右邊, %%第一個 2. 字符串提取 單一符號是最小匹配﹔兩個符號是最大匹配。 ${file:0:5}:提取最左邊的 5 個字節:/dir1 ${file:5:5}:提取第 5 個字節右邊的連續 5 個字節:/dir2 3. 字符串替換 ${file/dir/path}:將第一個 dir 提換為 path:/path1/dir2/dir3/my.file.txt ${file//dir/path}:將全部 dir 提換為 path:/path1/path2/path3/my.file.txt 4. 針對不同的變量狀態賦值(沒設定、空值、非空值): ${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。(非空值時不作處理) 注意: ":+"的情況是不包含空值的. ":-", ":="等只要有號就是包含空值(null). 5. 變量的長度 ${#file} 6. 數組運算 A=(a b c def) ${A[@]} 或 ${A[*]} 可得到 a b c def (全部組數) ${A[0]} 可得到 a (第一個組數),${A[1]} 則為第二個組數... ${#A[@]} 或 ${#A[*]} 可得到 4 (全部組數數量) ${#A[0]} 可得到 1 (即第一個組數(a)的長度),${#A[3]} 可得到 3 (第四個組數(def)的長度)
Copyright © Linux教程網 All Rights Reserved