shell中${}的妙用
1. 截?cái)喙δ?/div>
${file#*/}: 拿掉第一條/及其左邊的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}: 拿掉最后一條/及其左邊的字符串:my.file.txt
${file#*.}: 拿掉第一個(gè).及其左邊的字符串:file.txt
${file##*.}: 拿掉最后一個(gè).及其左邊的字符串:txt
${file%/*}: 拿掉最后條/及其右邊的字符串:/dir1/dir2/dir3
${file%%/*}: 拿掉第一條/及其右邊的字符串:(空值)
${file%.*}: 拿掉最后一個(gè).及其右邊的字符串:/dir1/dir2/dir3/my.file
${file%%.*}: 拿掉第一個(gè).及其右邊的字符串:/dir1/dir2/dir3/my
記憶的方法為:
[list]#是去掉左邊, ##最后一個(gè)
%是去掉右邊, %%第一個(gè)
2. 字符串提取
單一符號是最小匹配﹔兩個(gè)符號是最大匹配。
${file:0:5}:提取最左邊的 5 個(gè)字節(jié):/dir1
${file:5:5}:提取第 5 個(gè)字節(jié)右邊的連續(xù) 5 個(gè)字節(jié):/dir2
3. 字符串替換
${file/dir/path}:將第一個(gè) dir 提換為 path:/path1/dir2/dir3/my.file.txt
${file//dir/path}:將全部 dir 提換為 path:/path1/path2/path3/my.file.txt
4. 針對不同的變量狀態(tài)賦值(沒設(shè)定、空值、非空值):
${file-my.file.txt}: 若$file沒有設(shè)定,則使用my.file.txt作返回值。(空值及非空值時(shí)不作處理)
${file:-my.file.txt}:若$file沒有設(shè)定或?yàn)榭罩担瑒t使用my.file.txt作返回值。(非空值時(shí)不作處理)
${file+my.file.txt}: 若$file設(shè)為空值或非空值,均使用my.file.txt作返回值。(沒設(shè)定時(shí)不作處理)
${file:+my.file.txt}:若$file為非空值,則使用my.file.txt作返回值。(沒設(shè)定及空值時(shí)不作處理)
${file=my.file.txt}: 若$file沒設(shè)定,則使用my.file.txt作返回值,同時(shí)將$file 賦值為 my.file.txt。(空值及非空值時(shí)不作處理)
${file:=my.file.txt}:若$file沒設(shè)定或?yàn)榭罩担瑒t使用my.file.txt作返回值,同時(shí)將 $file 賦值為 my.file.txt。(非空值時(shí)不作處理)
${file?my.file.txt}: 若$file沒設(shè)定,則將my.file.txt輸出至 STDERR。(空值及非空值時(shí)不作處理)
${file:?my.file.txt}:若$file沒設(shè)定或?yàn)榭罩担瑒t將my.file.txt輸出至STDERR。(非空值時(shí)不作處理)
注意:
":+"的情況是不包含空值的.
":-", ":="等只要有號就是包含空值(null).
5. 變量的長度
${#file}
6. 數(shù)組運(yùn)算
A=(a b c def)
${A[@]} 或 ${A[*]} 可得到 a b c def (全部組數(shù))
${A[0]} 可得到 a (第一個(gè)組數(shù)),${A[1]} 則為第二個(gè)組數(shù)...
${#A[@]} 或 ${#A[*]} 可得到 4 (全部組數(shù)數(shù)量)
${#A[0]} 可得到 1 (即第一個(gè)組數(shù)(a)的長度),${#A[3]} 可得到 3 (第四個(gè)組數(shù)(def)的長度)
只有注冊用戶登錄后才能發(fā)表評論。 | ||
![]() |
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
|
||
相關(guān)文章:
|
||