變量內容的刪除、替代與替換
##:從變量內容最前面開始向右刪除符合替換文字的“最長的”那一個。
例子:
[root@www ~]# Dir=/usr/local/src [root@www ~]# echo $Dir /usr/local/src [root@www ~]# echo ${Dir#*/} usr/local/src [root@www ~]# echo ${Dir##*/} src
[root@www ~]# Dir=/usr/local/src/usr/local/src [root@www ~]# echo $Dir /usr/local/src/usr/local/src [root@www ~]# echo ${Dir/usr/USR} /USR/local/src/usr/local/src [root@www ~]# echo ${Dir//usr/USR} /USR/local/src/USR/local/src
變量設置方式 | 功能 |
${var#keyword} | 變量內容從頭開始的數據符合“keyword”,則將符合的最短數據刪除 |
${var##keyword} | 變量內容從頭開始的數據符合“keyword”,則將符合的最長數據刪除 |
${var%keyword} | 變量內容從尾向前的數據符合“keyword”,則將符合的最短數據刪除 |
${var%%keyword} | 變量內容從尾向前的數據符合“keyword”,則將符合的最長數據刪除 |
${var/old_str/new_str} | 變量內容符合“old_str”,則第一個old_str會被new_str替換 |
${var//old_str/new_srt} | 變量內容符合“old_str”,則全部的old_str會被new_str替換 |
變量的設置方式 | str沒有設置 | str爲空字符串 | str已經設置自爲非空字符串 |
var=${str-expr} | var=expr | var= | var=$str |
var=${str:-expr} | var=expr | var=expr | var=$str |
var=${str+expr} | var= | var=expr | var=expr |
var={str:+expr} | var= | var= | var=expr |
var=${str=expr} | str=expr var=expr | str不變 var= | str不變 var=$str |
var={str:=expr} | str=expr var=expr | str=expr var=expr | str不變 var=$str |
var=${str?expr} | expr輸出至stderr | var= | var=str |
var=${str:?expr} | expr輸出至stderr | expr輸出至stderr | var=str |
[root@www ~]# unset FQDN #變量沒有設置 [root@www ~]# echo $FQDN [root@www ~]# echo ${FQDN:-www.snkof.com} #變量沒有設置,使用word的值替換變量的值 www.snkof.com [root@www ~]# FQDN='' #變量設置爲空字符串 [root@www ~]# echo ${FQDN:-www.snkof.com} #如果變量爲空字符串則使用word的值替換變量的值 www.snkof.com [root@www ~]# FQDN=www.google.com.hk #變量設置了值 [root@www ~]# echo ${FQDN:-www.snkof.com} #變量使用默認值 www.google.com.hk [root@www ~]# echo $FQDN #變量依然使用默認值 www.google.com.hk
[root@www ~]# unset FQDN #變量未設置 [root@www ~]# echo $FQDN [root@www ~]# echo ${FQDN:=www.snkof.com} #變量未設置,使用word的值替換成變量的默認值 www.snkof.com [root@www ~]# echo $FQDN #並且將word的值設置爲FQDN變量的默認值 www.snkof.com [root@www ~]# FQDN='' #變量設置爲空字符串 [root@www ~]# echo ${FQDN:=www.snkof.com} #如果變量爲字符串則使用word的值替換成變量的默認值 www.snkof.com [root@www ~]# echo $FQDN #並且將word的值設置爲FQDN變量的默認值 www.snkof.com [root@www ~]# FQDN=www.google.com.hk #變量設置了值 [root@www ~]# echo ${FQDN:=www.snkof.com} #使用變量的默認值 www.google.com.hk [root@www ~]# echo $FQDN #變量的默認值沒有生髮改變 www.google.com.hk
[root@www ~]# unset FQDN [root@www ~]# echo ${FQDN:?novalue} -bash: FQDN: novalue #錯誤信息 [root@www ~]# echo $FQDN #FQDN沒有任何值,只會顯示錯誤信息給予警示。
這個錯誤信息將會定向至標準錯誤輸出
[root@www ~]# echo $FQDN #FQDN本身爲空值 [root@www ~]# echo ${FQDN:+www.google.com.hk} #什麼也沒有做 [root@www ~]# echo $FQDN #FQDN還是爲空值 [root@www ~]# FQDN=www.google.com.hk #給FQDN賦值 [root@www ~]# echo ${FQDN:+www.snkof.com} www.snkof.com #如果變量有值,則替換成word的值 [root@www ~]# echo $FQDN www.google.com.hk #但是FQDN的值不會被改變