BASH: "local var=${3-16}" 含义不明确

BASH: "local var=${3-16}" meaning not clear

试图理解一些 BASH 脚本我遇到了这一行

local var=${3-16}

我理解赋值部分和本地部分 - 我的问题是“${3-16}”中的破折号表示什么。

如果我尝试:

 $ maxi=${1-45}; echo $maxi
 45 <-- result

请解释破折号的含义。谢谢

当做${parameter-default}(或${parameter:-default})时,如果没有设置parameter,它将使用default值。

所以在var=${3-16}中,如果没有设置</code>,<code>var就是16,否则,var就是.

您可以查看 Advanced Bash-Scripting Guide 以获得更多示例和其他替换。

表示"unless the parameter is unassigned, in which case use..."。 (:- 表示 "unless the parameter is empty or unassigned"。)所以 ${3-16} 表示“</code> 如果存在,否则 <code>16”。