我理解bash中的冒号操作符就像null一样,我知道它在参数扩展中使用,以及以其他方式使用,但有人可以解释一下:
: ${SOMETHING='value'}
Run Code Online (Sandbox Code Playgroud)
从实验中我知道这会将环境变量设置$SOMETHING
为'value'
但为什么?
"只是因为它确实"是一个有效的答案,但请指出我的文档(我似乎无法找到)或这个用法的正确名称将是有用的.我希望有一个更有启发性的解释.
Kil*_*oth 77
value
如果尚未设置,则表达式将SOMETHING 设置为.在许多情况下,这是一个有用的操作员.但是,它也会返回指定的值,因此如果您只是执行了
${SOMETHING='value'}
Run Code Online (Sandbox Code Playgroud)
然后你的shell会尝试调用该命令value
.这可能会或可能不会做不需要的事情; 至少它会抛出一条消息"value:command not found".
为了避免这种情况,您可以使用no-op :
来计算其参数,然后抛弃它,而不是执行它.
这里解释:http://tldp.org/LDP/abs/html/parameter-substitution.html
如果未设置参数,请将其设置为默认值.
两种形式几乎相同.:只有当声明了$参数并且为null时才会有所不同,如上所述[1].
Run Code Online (Sandbox Code Playgroud)echo ${var=abc} # abc echo ${var=xyz} # abc # $var had already been set to abc, so it did not change.