【发布时间】:2015-01-02 22:01:48
【问题描述】:
试图理解一些 BASH 脚本我遇到了这一行
local var=${3-16}
我了解分配部分和本地部分 - 我的问题是“${3-16}”中的破折号表示什么。
如果我尝试:
$ maxi=${1-45}; echo $maxi
45 <-- result
请解释破折号的含义。谢谢
【问题讨论】:
试图理解一些 BASH 脚本我遇到了这一行
local var=${3-16}
我了解分配部分和本地部分 - 我的问题是“${3-16}”中的破折号表示什么。
如果我尝试:
$ maxi=${1-45}; echo $maxi
45 <-- result
请解释破折号的含义。谢谢
【问题讨论】:
在做${parameter-default}(或${parameter:-default})的时候,如果parameter没有设置,就会使用default的值。
所以在var=${3-16} 中,如果$3 未设置,则var 将为16,否则var 将为$3。
您可以查看Advanced Bash-Scripting Guide 以获取更多示例和其他替换。
【讨论】:
${parameter-default}和${parameter:-default}不一样,因为第二个也包括$parameter为空的情况。
它的意思是“除非参数未分配,在这种情况下使用...”。 (:- 表示“除非参数为空或未分配”。)所以${3-16} 表示“$3 如果存在,否则为16”。
【讨论】: