我理解冒号运算符在bash的行为像
a null,我知道它在
parameter expansion使用,以及使用其他方式,但有人可以解释这一点:
: ${SOMETHING='value'}
从实验我知道,这将环境变量$ SOMETHING设置为’value’,但为什么?
“只是因为它是”是一个有效的答案,但然后请指出我的文档(我似乎找不到)或一个正确的名称,这种用法将是有用的。我希望有一个更有启发性的解释。
如果尚未设置,表达式将SOMETHING设置为value。在许多情况下,这是
一个有用的运算符。但是,它也返回赋值,所以如果你只是执行
${SOMETHING='value'}
那么你的shell会尝试调用命令的值。这可能或可能不会做一些不必要的事情;至少它会抛出一条消息“值:命令未找到”。
为了避免这种情况,你可以使用no-op:来评估它的参数,然后抛弃它,而不是执行它。