我已经运行了一个跨 shell 脚本BUILDDIR=${BUILDDIR:-"/data"}
,在实验中,如果原始 BUILDDIR 存在且不是空字符串,则使用该脚本,否则将其设置为 /data。我不明白表达式是如何工作的——为什么:
and-
运算符以及它们是如何工作的。
我已经运行了一个跨 shell 脚本BUILDDIR=${BUILDDIR:-"/data"}
,在实验中,如果原始 BUILDDIR 存在且不是空字符串,则使用该脚本,否则将其设置为 /data。我不明白表达式是如何工作的——为什么:
and-
运算符以及它们是如何工作的。
它是(幸运的是)作为参数扩展的一部分完成的少数快捷方式之一。简而言之,有以下松散定义的内容:
${VAR:-value}
尽可能使用$VAR
,否则value
${VAR:=value}
尽可能使用$VAR
,否则设置$VAR
为value
并使用value
${VAR:?value}
(exit if$VAR
is undefined) 和${VAR:+value}
(opposite of:-
) 存在,但我从未在野外见过它们。${VAR:offset}
并${VAR:offset:length}
取$VAR
.(还有很多其他的删除前缀或后缀或进行一般替换;请参阅上面链接的 bash 信息页面。)