BASH:“local var = $ {3-16}” 的意思不明确。

4
尝试理解一些BASH脚本时,我遇到了这一行。
local var=${3-16}

我可以理解作业部分和本地部分 - 我的问题是"${3-16}"中的破折号表示什么意思。

如果我尝试:

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

请解释破折号的含义。谢谢。
2个回答

10

在执行 ${parameter-default}(或者${parameter:-default}) 时,如果parameter没有被设置,就会使用默认值default

因此,在var=${3-16}中,如果$3没有被设置,var将会是16,否则var将会是$3

你可以查看Advanced Bash-Scripting Guide获取更多示例和其他替换方式。


1
请参阅 Bash 手册 - glenn jackman
1
所以${parameter-default}${parameter:-default}不同,因为第二个还包括了$parameter为空的情况。 - fedorqui

10

这意味着“除非参数未被赋值,否则使用...”。(:-表示“除非参数为空或未被指定”。) 因此,${3-16}的意思是“如果存在$3,则使用$3,否则使用16”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接