隨筆-314  評論-209  文章-0  trackbacks-0
          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)的長度)
          posted on 2015-10-29 16:18 xzc 閱讀(157) 評論(0)  編輯  收藏 所屬分類: linux/unix
          主站蜘蛛池模板: 缙云县| 巴南区| 田东县| 霍山县| 武威市| 安仁县| 涡阳县| 鄂温| 东明县| 华蓥市| 石嘴山市| 普陀区| 老河口市| 永年县| 河东区| 石河子市| 界首市| 铜山县| 榆社县| 大连市| 洮南市| 靖州| 长寿区| 依安县| 新平| 蕲春县| 丰镇市| 姚安县| 泰来县| 保康县| 尚志市| 柏乡县| 雅江县| 新巴尔虎右旗| 芜湖市| 利川市| 德昌县| 城固县| 新河县| 文安县| 武穴市|