【问题标题】:BASH: "local var=${3-16}" meaning not clearBASH: "local var=${3-16}" 含义不清楚
【发布时间】:2015-01-02 22:01:48
【问题描述】:

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

local var=${3-16}

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

如果我尝试:

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

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

【问题讨论】:

    标签: linux bash shell


    【解决方案1】:

    在做${parameter-default}(或${parameter:-default})的时候,如果parameter没有设置,就会使用default的值。

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

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

    【讨论】:

    • 所以${parameter-default}${parameter:-default}不一样,因为第二个也包括$parameter为空的情况。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 2017-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      • 2013-08-06
      • 2012-11-22
      • 2020-11-07
      相关资源
      最近更新 更多