BASH:“local var = $ {3-16}”意思不清楚

时间:2015-01-02 13:58:31

标签: linux bash shell

尝试理解我遇到的一些BASH脚本

local var=${3-16}

我理解作业部分和本地部分 - 我的问题是破折号在“$ {3-16}”中的含义。

如果我尝试:

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

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

2 个答案:

答案 0 :(得分:10)

执行${parameter-default}(或${parameter:-default})时,如果未设置parameter,则会使用default值。

因此,在var=${3-16}中,如果未设置$3,则var将为16,否则var将为$3

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

答案 1 :(得分:10)

这意味着“除非参数未分配,在这种情况下使用......”。 (:-表示“除非参数为空或未分配”。)因此${3-16}表示“$3(如果存在),否则为16”。