【问题标题】:Shell - use of the variable with dashShell - 使用带有破折号的变量
【发布时间】:2016-05-02 07:55:20
【问题描述】:

我在这里阅读 tcollector init.sh 文件:https://github.com/OpenTSDB/tcollector/blob/master/rpm/initd.sh#L25

第 25TCOLLECTOR=${TCOLLECTOR-/usr/local/tcollector/tcollector.py} 行中的破折号是什么意思?

(我原本以为它只是将破折号后的路径分配给 TCOLLECTOR;但是我的测试显示了两个不同的结果:

  1. 如果已为 TCOLLECTOR 分配了一个值,它将保留该值
  2. 否则 TCOLLECTOR 将具有值“/usr/local/tcollector/tcollector.py”

我还查看了“-”的使用,但它都是关于 STDIN 和 STDOUT...我不知道它们与我的问题有什么关系。)

谢谢。

【问题讨论】:

    标签: shell init.d opentsdb


    【解决方案1】:

    这是一个参数扩展的例子;一般的 POSIX 变体记录在 here,您可以阅读有关 Bash 化身的信息 here

    基本上,减号扩展完全符合您的描述:${anyVariable-anyExpression} 扩展为 $anyVariable 的值(如果已设置),但如果未设置,则扩展为 anyExpression

    加号正好相反:如果$anyVariable 有值,则${anyVariable+anyExpression} 扩展为anyExpression,如果未设置,则扩展为空(空字符串)。

    还有其他几个选项。

    【讨论】:

    • 谢谢马克!因为我没有至少 15 个声誉,所以我不能投票给这个答案......将来会这样做
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-14
    • 2014-09-11
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    相关资源
    最近更新 更多