在“:$ {foo = value}”中对冒号操作符的解释
我理解bash中的冒号操作符,它的作用类似于null ,我知道它用于参数扩展 ,以及用于其他方式,但有人可以解释这一点:
: ${SOMETHING='value'}
从实验中,我知道这将环境variables$SOMETHING
为'value'
但为什么?
“只是因为它”是一个有效的答案,但是请指向我的文档(我似乎无法find),或者这个用法的专用名称将是有用的。 我希望有一个更有启发性的解释。
expression式将SOMETHING设置为value
如果它尚未设置。 在许多情况下,这是一个有用的操作符。 但是,它也返回分配的值,所以如果你只是执行
${SOMETHING='value'}
那么你的shell会尝试调用命令value
。 这可能会或可能不会做一些不需要的事情; 至less它会发出一条消息“value:command not found”。
为了避免这种情况,你可以使用no-op :
来评估它的参数,然后把它扔掉,而不是执行它。
这里解释: http : //tldp.org/LDP/abs/html/parameter-substitution.html
如果参数未设置,则将其设置为默认值。
两种forms几乎相同。 :只有当声明了$参数时才有所作为,并且如上所述为空,[1]。
echo ${var=abc} # abc echo ${var=xyz} # abc # $var had already been set to abc, so it did not change.