shell中${}的妙用

1. 截斷功能html

${file#*/}:       拿掉第一條/及其左邊的字符串:dir1/dir2/dir3/my.file.txt數組

${file##*/}:    拿掉最後一條/及其左邊的字符串:my.file.txtide

${file#*.}:       拿掉第一個.及其左邊的字符串:file.txthtm

${file##*.}:    拿掉最後一個.及其左邊的字符串:txt字符串

${file%/*}:     拿掉最後條/及其右邊的字符串:/dir1/dir2/dir3it

${file%%/*}: 拿掉第一條/及其右邊的字符串:(空值)class

${file%.*}:    拿掉最後一個.及其右邊的字符串:/dir1/dir2/dir3/my.file變量

${file%%.*}: 拿掉第一個.及其右邊的字符串:/dir1/dir2/dir3/myfile

記憶的方法爲:方法

[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)的長度)

轉自:http://www.2cto.com/os/201310/248691.html

相關文章
相關標籤/搜索