${parameter:=word} 分配默认值。如果参数未设置或为空,则将单词的扩展分配给参数。然后替换参数的值。不能以这种方式分配位置参数和特殊参数。
我以为我可以使用此功能来编写${LONG_VARIABLE_NAME:=hello}而不是 long LONG_VARIABLE_NAME=${LONG_VARIABLE_NAME:-hello},但现在 bash 也尝试执行 ‘hello’ 并且给出了一个找不到命令。有什么办法可以避免吗?还是我必须坚持后者?有人可以举一个分配默认值实际上有用的例子吗?
${LONG_VARIABLE_NAME:=hello}
LONG_VARIABLE_NAME=${LONG_VARIABLE_NAME:-hello}
使用冒号:
: ${A:=hello}
冒号是一个空命令,它什么都不做并且忽略它的参数。它内置在 bash 中,因此不会创建新进程。