Shell處理字符串常用技巧之判值、賦值
在Shell編程中,經常要處理一些字符串變量。
下面給大家整理Shell處理字符串常用技巧之判值、賦值。
請參考:
Shell處理字符串常用技巧之分割、替換字符串
Shell處理字符串常用技巧之截取子串
(1)、${VALUE:-word}:
當變量未定義或者值為空時,返回值為WORD的內容。
否則返回變量的值。
(2)、${VALUE:=WORD}:
當變量未定義或者值為空時,返回WORD的值的同時并將WORD賦值給VALUE。
否則返回變量的值。
(3)、${VALUE:+WORD}:
當變量已賦值時,其值才用WORD替換。
否則不進行任何替換。
(4)、${VALUE:?MESSAGE}:
當變量已賦值時,正常替換。
否則將消息MESSAGE送到標準錯誤輸出。
若此替換出現在SHELL程序中,那么該程序將終止運行。
補充:
WORD可以為一個字符串,也可以為一個變量。
當為變量時,需要用"$"引用該變量。
案例:
(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
補充:
使用$引用變量
[odysee@kingdom ~]$ name=
[odysee@kingdom ~]$ sname=odysee
[odysee@kingdom ~]$ echo ${name:-$sname}
odysee
總結:
關于以上的字符串操作,有點拗腦,不太容易記憶。
如果有什么好的記憶方式,望大家不吝賜教。
歡迎大家給予寶貴的意見或者建議。
歡迎大家補充或者共享一些其他的方法。
感謝支持。