【问题标题】:What is this bash parameter expansion syntax?这个 bash 参数扩展语法是什么?
【发布时间】:2020-09-19 03:38:25
【问题描述】:

我以前从未见过这种+x} 语法,也找不到有关它的文档。它有什么作用?

if [[ -z "${EMPLOYEE_CLUSTER+x}" ]]; then
  export EMPLOYEE_CLUSTER=shared
fi

【问题讨论】:

    标签: bash parameter-expansion


    【解决方案1】:

    如果定义了变量EMPLOYEE_CLUSTER(甚至是空字符串),则扩展扩展为x。由于x 不是空字符串,[[ 测试将评估为真。如果未定义变量,则扩展扩展为空,并且测试评估为假。请注意,${EMPLOYEE_CLUSTER:+x} 中冒号的存在会改变扩展;该变量必须设置为非空才能获得x 输出。

    这是一个稍微不寻常的用法,但在允许空值但必须设置变量的测试中很难做得更好。该表示法更常用于有条件地将值传递给命令。例如:

    mythical-creature ${UNICORN:+"-u"} ${UNICORN}
    

    这会将-u 选项传递给mythical-creature,如果$UNICORN 已定义且非空——以及存储在$UNICORN 中的值。如果$UNICORN 未定义且非空,则不向命令传递任何参数。

    请参阅 Bash 手册中的 Shell parameter expansion — 这是本节中记录的第四个符号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-04
      • 1970-01-01
      • 2018-05-30
      相关资源
      最近更新 更多