隨筆-314  評論-209  文章-0  trackbacks-0
          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)的長度)
          posted on 2015-10-29 16:18 xzc 閱讀(157) 評論(0)  編輯  收藏 所屬分類: linux/unix
          主站蜘蛛池模板: 红河县| 宁城县| 木里| 祁东县| 新田县| 裕民县| 长汀县| 屯昌县| 育儿| 鸡泽县| 武定县| 汽车| 黄大仙区| 永胜县| 荆门市| 三明市| 淄博市| 开鲁县| 山丹县| 通州区| 遂宁市| 福清市| 奈曼旗| 天柱县| 平度市| 彰化县| 炉霍县| 新干县| 曲沃县| 乌什县| 应城市| 拉孜县| 东阿县| 石景山区| 广东省| 唐海县| 仙桃市| 景东| 东宁县| 洪雅县| 玛曲县|