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
总结:
关于以上的字符串操作,有点拗脑,不太容易记忆。
如果有什么好的记忆方式,望大家不吝赐教。
欢迎大家给予宝贵的意见或者建议。
欢迎大家补充或者共享一些其他的方法。
感谢支持。