隨筆-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 閱讀(160) 評論(0)  編輯  收藏 所屬分類: linux/unix
          主站蜘蛛池模板: 来宾市| 辽宁省| 昭平县| 牙克石市| 玛多县| 江油市| 武冈市| 聂荣县| 山东省| 乌鲁木齐市| 陆丰市| 汾阳市| 华池县| 瑞昌市| 宣汉县| 府谷县| 邯郸县| 广昌县| 芜湖市| 汤原县| 伊春市| 双辽市| 娱乐| 安顺市| 潞西市| 汽车| 双流县| 百色市| 上高县| 汪清县| 土默特左旗| 江华| 佛冈县| 柏乡县| 襄城县| 巩留县| 海阳市| 屏山县| 基隆市| 永和县| 扬中市|