设为首页 加入收藏

TOP

shell中变量的测试与替换
2014-11-24 07:15:00 来源: 作者: 【 】 浏览:0
Tags:shell 变量 测试 替换

在某些时刻我们经常需要判断某个变量是否存在,若变量存在则使用既有的设置,若变量不存在则给予一个常用的设置。


(1)变量未被设置或者内容为空,则替换为新的内容.


new_var=${old_var-content}


范例一:测试一下是否存在 username 这个发量,若不存在则给予 username 内容为 root
[root@www ~]# echo $username
<==由于出现空白,所以 username 可能不存在,也可能是空字符串
[root@www ~]# username=${username-root}
[root@www ~]# echo $username
root <==因为 username 没有设定,所以给予为 root的内容。
[root@www ~]# username="vbird tsai"
[root@www ~]# username=${username-root}
[root@www ~]# echo $username
vbird tsai <==因为 username 已经设定了,所以使用旧有癿设定而不以 root取代


上面的范例中,若username已经设定为空串的话,则不会替换,如果要想它进行次替换就可以用加上“:”,即# username=${username:-root}


范例二:若 username 未设定或者为空字符串,则将 username 内容设定为 root
[root@www ~]# username=""
[root@www ~]# username=${username-root}
[root@www ~]# echo $username
<==因为 username 被设定为空字符串了!所以当然还是保留为空字符串!
[root@www ~]# username=${username:-root}
[root@www ~]# echo $username
root <==加上『 : 』后若发量内容为空或者是未设定,都能够以后面癿内容替换。


(2)"-"是不影响旧的内容,若想要替换新的内容则用“=”


[root@www ~]# unset str; var=${str=newvar}
[root@www ~]# echo var="$var", str="$str"
var=newvar, str=newvar <==因为 str 不存在,所以 var/str 均为 newvar

测试:如果 str 已存在了,测试一下 var 会发怎样?
[root@www ~]# str="oldvar"; var=${str=newvar}
[root@www ~]# echo var="$var", str="$str"
var=oldvar, str=oldvar <==因为str存在,所以var等于str的内容


(3)如果我想知道,如果旧发量不存在时,整个测试就告知我『有错误』,此时就能够使用问号


[root@www ~]# unset str; var=${str 无此变量}
-bash: str: 无此发量 <==因为 str 不存在,所以输出错误讯息


(4)总结



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Python中使用subprocess.Popen返.. 下一篇shell中正则表达式

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·工业机器人TCP校准中 (2025-12-25 05:19:17)
·opc 通讯协议与 TCP (2025-12-25 05:19:15)
·labview中tcp/ip通信 (2025-12-25 05:19:13)
·新书介绍《Python数 (2025-12-25 04:49:47)
·怎么利用 Python 进 (2025-12-25 04:49:45)