Shell處理字符串常用技巧之判值、賦值
在Shell編程中,經(jīng)常要處理一些字符串變量。
下面給大家整理Shell處理字符串常用技巧之判值、賦值。
請參考:
Shell處理字符串常用技巧之分割、替換字符串
Shell處理字符串常用技巧之截取子串
(1)、${VALUE:-word}:
當(dāng)變量未定義或者值為空時(shí),返回值為WORD的內(nèi)容。
否則返回變量的值。
(2)、${VALUE:=WORD}:
當(dāng)變量未定義或者值為空時(shí),返回WORD的值的同時(shí)并將WORD賦值給VALUE。
否則返回變量的值。
(3)、${VALUE:+WORD}:
當(dāng)變量已賦值時(shí),其值才用WORD替換。
否則不進(jìn)行任何替換。
(4)、${VALUE:?MESSAGE}:
當(dāng)變量已賦值時(shí),正常替換。
否則將消息MESSAGE送到標(biāo)準(zhǔn)錯(cuò)誤輸出。
若此替換出現(xiàn)在SHELL程序中,那么該程序?qū)⒔K止運(yùn)行。
補(bǔ)充:
WORD可以為一個(gè)字符串,也可以為一個(gè)變量。
當(dāng)為變量時(shí),需要用"$"引用該變量。
案例:
(1) ${VALUE:-WORD}:
[odysee@kingdom ~]$ name=mynameisodysee
[odysee@kingdom ~]$ echo ${name:-"name is empty or undefined"}
mynameisodysee
[odysee@kingdom ~]$ name=
[odysee@kingdom ~]$ echo ${name:-"name is empty or undefined"}
name is empty or undefined
[odysee@kingdom ~]$ echo ${names:-"name is empty or undefined"}
name is empty or undefined

(2) ${VALUE:=WORD}:
[odysee@kingdom ~]$ name=
[odysee@kingdom ~]$ echo ${name:="odysee"}
odysee
[odysee@kingdom ~]$ echo ${name}
odysee

(3) ${VALUE:+WORD}:
[odysee@kingdom ~]$ name=odysee
[odysee@kingdom ~]$ echo ${name:+"odysee^s dad"}
odysee^s dad

(4)${VALUE:?MESSAGE}:
[odysee@kingdom ~]$ name=
[odysee@kingdom ~]$ echo ${names:?"I am odysee^s dad"}
-bash: names: I am odysee^s dad

補(bǔ)充:
使用$引用變量
[odysee@kingdom ~]$ name=
[odysee@kingdom ~]$ sname=odysee
[odysee@kingdom ~]$ echo ${name:-$sname}
odysee

總結(jié):
關(guān)于以上的字符串操作,有點(diǎn)拗腦,不太容易記憶。
如果有什么好的記憶方式,望大家不吝賜教。
歡迎大家給予寶貴的意見或者建議。
歡迎大家補(bǔ)充或者共享一些其他的方法。
感謝支持。