Shell (二) 变量替换

1.:=

  

username 未定义或值为空时会被设置为变量 LOGNAME 的值


只有当变量 username 已经被定义且有一个非空值时,才不会被设置为 LOGNAME 值

2.=

  

只要变量 username 已经被定义,不论值是否为空都不会被设置为变量 LOGNAME  值

下面示例中均不会改变 LOGNAME  值,所以就不不再赋值

3.:-


username 不论是否定义及值是否为空,整个命令运行完成后,username均不会被设置为 LOGNAME 的值。

总之,username不会被替换为 LOGNAME 值,echo 会寻找第一个非空的值输出

至于 username 在 ${} 中是否被替换,这个还没测试 

4.-

 

不论是否定义及值是否为空,username不会被替换为 LOGNAME 值,echo 会找到第一个已经设置的变量的值输出,如果username没有被设置,将输出 LOGNAME 的值

5.:?

 


同 :-  一样,echo 会输出 username 和 LOGNAME 中值非空的一个;不论是否定义及值是否为空,username不会被替换为 LOGNAME 值

同 :- 的唯一区别是当 username 未设置或值为空时,echo 输出结果的同时会显示脚本当前运行位置并退出

比较下面两个脚本及运行结果的异同:

    

  

6.?

同 :? 的区别为 ? 并不要求 username 值一定为非空,即如果 username值只要设置了,那么即使为空,脚本也不会退出,比较如下脚本:


7.:+


当变量值 username 被定义且不为空的时候 ${} 表达式才执行替换,如果username 未定义或值为空,则使用空值。 username 值不会被改变。

这个符号可用来检查一个已经定义的变量值是否为空

8.+


只要 username 被定义,不论值是否为空,${} 都将使用LOGNAME 的值



Reference

Ron Perters.Expert Shell Scripting



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值