【问题标题】:What does VAR_NAME=${VAR_NAME:-"/some/path/file"} meanVAR_NAME=${VAR_NAME:-"/some/path/file"} 是什么意思
【发布时间】:2012-07-03 05:45:31
【问题描述】:

VAR_NAME=${VAR_NAME:-"/some/path/file"} 在 shell 脚本中是什么意思?

这是一个初始化脚本,我正在编写一个自定义脚本,以将我们的一些启动操作放入 init 脚本中,以便我们可以在启动时自动启动它们,但我对 shell 脚本没有太多经验,所以我'正在使用我们过去定制的不相关软件的启动脚本。

指向的路径指向一个文件,该文件包含覆盖脚本中设置的默认值的配置值。

我无法弄清楚该构造的真正含义(特别是 :- 部分)。

我正在处理的脚本似乎也将此操作链接在一起以解析要使用的值,例如:

LOG_FILE=${LOG_FILE:-${LOGFILE:-$DEFAULT_LOG_FILE}}

【问题讨论】:

    标签: bash init.d


    【解决方案1】:
      ${parameter:-word}
            Use Default Values. If parameter is unset or null, the expansion
            of word shall be substituted; otherwise, the value of parameter shall be
            substituted.
    

    【讨论】:

    • 该链可能源自一个剪切-粘贴,其中变量具有不同的名称。写A=${B:-${C:-default}} 是一个相当普遍的习语
    • 链接是在有人定义LOGFILE而不是LOG_FILE的情况下。如果定义了LOG_FILE,它使用那个,否则如果定义了LOGFILE,它使用那个,否则它使用DEFAULT_LOG_FILE
    【解决方案2】:

    它设置 VAR_NAME 等于 VAR_NAME 如果它存在或 /some/path/file 如果它不存在。

    只有在变量名不同的情况下,链下它才有意义。

    【讨论】:

    • 我误读了来源,实际上它们是不同的。初始化脚本使用的值为LOG_FILE,而配置文件中的值为LOGFILE。我抄错了
    猜你喜欢
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多