shell ${}的使用


鼓勵將SHELL中變量全部用{} 括起來,便於閱讀,防止變量名產生歧義。

用於實現以下場景

1 root@ngiam-db:/data# echo $SHELL
2 /bin/bash
3 root@ngiam-db:/data# comm=${SHELL}IsMyShell
4 root@ngiam-db:/data# echo $comm
5 /bin/bashIsMyShell

 

 1 假設我們定義了一個變量為: 
 2 file=/dir1/dir2/dir3/my.file.txt 3 我們可以用 ${ } 分別替換獲得不同的值: 4 ${file#*/}:拿掉第一條 / 及其左邊的字符串:dir1/dir2/dir3/my.file.txt 5 ${file##*/}:拿掉最后一條 / 及其左邊的字符串:my.file.txt 6 ${file#*.}:拿掉第一個 . 及其左邊的字符串:file.txt 7 ${file##*.}:拿掉最后一個 . 及其左邊的字符串:txt 8 ${file%/*}:拿掉最后條 / 及其右邊的字符串:/dir1/dir2/dir3 9 ${file%%/*}:拿掉第一條 / 及其右邊的字符串:(空值) 10 ${file%.*}:拿掉最后一個 . 及其右邊的字符串:/dir1/dir2/dir3/my.file 11 ${file%%.*}:拿掉第一個 . 及其右邊的字符串:/dir1/dir2/dir3/my 12 記憶的方法為: 13 14 # 是去掉左邊(在鑒盤上 # 在 $ 之左邊) 15 % 是去掉右邊(在鑒盤上 % 在 $ 之右邊) 16 單一符號是最小匹配﹔兩個符號是最大匹配。 17 18 19 ${file:0:5}:提取最左邊的 5 個字節:/dir1 20 ${file:5:5}:提取第 5 個字節右邊的連續 5 個字節:/dir2 21 22 我們也可以對變量值里的字符串作替換: 23 ${file/dir/path}:將第一個 dir 提換為 path:/path1/dir2/dir3/my.file.txt 24 ${file//dir/path}:將全部 dir 提換為 path:/path1/path2/path3/my.file.txt 25 26 利用 ${ } 還可針對不同的變量狀態賦值(沒設定、空值、非空值): 27 ${file-my.file.txt} :假如 $file 為空值,則使用 my.file.txt 作默認值。(保留沒設定及非空值) 28 ${file:-my.file.txt} :假如 $file 沒有設定或為空值,則使用 my.file.txt 作默認值。 (保留非空值) 29 ${file+my.file.txt} :不管 $file 為何值,均使用 my.file.txt 作默認值。 (不保留任何值) 30 ${file:+my.file.txt} :除非 $file 為空值,否則使用 my.file.txt 作默認值。 (保留空值) 31 ${file=my.file.txt} :若 $file 沒設定,則使用 my.file.txt 作默認值,同時將 $file 定義為非空值。 (保留空值及非空值) 32 ${file:=my.file.txt} :若 $file 沒設定或為空值,則使用 my.file.txt 作默認值,同時將 $file 定義為非空值。 (保留非空值) 33 ${file?my.file.txt} :若 $file 沒設定,則將 my.file.txt 輸出至 STDERR。 (保留空值及非空值)) 34 ${file:?my.file.txt} :若 $file 沒設定或為空值,則將 my.file.txt 輸出至 STDERR。 (保留非空值) 35 36 還有,${#var} 可計算出變量值的長度: 37 ${#file} 可得到 27 ,因為 /dir1/dir2/dir3/my.file.txt 剛好是 27 個字節...

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM