【问题标题】:Bash shell scripting variablesBash shell 脚本变量
【发布时间】:2010-12-03 06:40:38
【问题描述】:

我的 shell 脚本中有以下行:

如果 [ -n "${USE_X:+1}" ];那么

我不知道“:+1”部分是什么意思。有什么想法吗?

【问题讨论】:

    标签: bash shell scripting variables


    【解决方案1】:

    看看here。该网址提供了以下解释:

    ${parameter:+alt_value}

    如果设置了参数,则使用 alt_value,否则使用空字符串。

    并有以下示例:

    echo
    echo "###### \${parameter:+alt_value} ########"
    echo
    
    a=${param4:+xyz}
    echo "a = $a"      # a =
    
    param5=
    a=${param5:+xyz}
    echo "a = $a"      # a =
    # Different result from   a=${param5+xyz}
    
    param6=123
    a=${param6:+xyz}
    echo "a = $a"      # a = xyz
    

    【讨论】:

      【解决方案2】:

      基本上,如果设置了 $USE_X,则语句被评估为 1,否则为 null。可能类似于

      if [ -z $USE_X ];
      then
          echo 1
      else
          echo ""
      fi
      

      来自http://tldp.org/LDP/abs/html/parameter-substitution.html#PATTMATCHING

      ${parameter+alt_value}, ${parameter:+alt_value}
      If parameter set, use alt_value, else use null string.
      
      Both forms nearly equivalent. The : makes a difference only when parameter has been declared and is null, see below.
      

      【讨论】:

        【解决方案3】:

        因为 aioobe 已经回答了这个问题本身,所以这里有一种方法可以使用正则表达式来搜索像 Bash 这样的长联机帮助页,以这个问题为例:

        
        /\{.*:\+
        

        第一个正斜杠将less(手册页查看器)置于搜索模式;正则表达式说要搜索左括号,然后是任意数量的东西,然后是冒号,后跟加号。括号和加号需要转义,因为它们对正则表达式解析器具有特殊含义。

        【讨论】:

          猜你喜欢
          • 2021-08-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-16
          • 1970-01-01
          • 2018-02-23
          • 2011-07-23
          • 2012-06-28
          相关资源
          最近更新 更多