【问题标题】:How do I echo a sum of a variable and a number?如何回显变量和数字的总和?
【发布时间】:2011-06-12 15:41:39
【问题描述】:

我有一个变量 x=7,我想回显它加一,例如 echo ($x+1),但我得到了:

bash:语法错误接近意外 令牌`$x+1'

我该怎么做?

【问题讨论】:

    标签: linux shell scripting


    【解决方案1】:

    不需要expr,POSIX shell 允许$(( )) 进行算术评估:

    echo $((x+1))
    

    §2.6.4

    【讨论】:

      【解决方案2】:

      试试双括号:

      $ x=7; echo $(($x + 1))
      8
      

      【讨论】:

        【解决方案3】:

        您也可以使用bc 实用程序:

        $ x=3;
        $ echo "$x+5.5" | bc
        8.5
        

        【讨论】:

          【解决方案4】:

          试试 回声 $(($x + 1))

          我认为这只适用于 3 或更多版本的 bash..

          echo `expr $x + 1`
          

          将是另一种解决方案

          【讨论】:

          • 正如我的回答中提到的,$(( )) 实际上是 POSIX 兼容的,而不是 bash 主义。
          【解决方案5】:
          $ echo $(($x+1))
          8
          

          来自man bash

          算术展开

          算术扩展允许对算术进行评估 表达式和结果的替换。格式 算术扩展是:

              $((expression))
          

          表达式被视为在 double 内 引号,但括号内的双引号不是 特殊对待。表达式中的所有标记都经过 参数扩展,字符串扩展,命令替换, 和报价删除。算术替换可以嵌套。

          根据列出的规则执行评估 下面在算术评估下。如果表达式是 无效,bash 打印一条消息,指示失败并且没有 发生替换。

          【讨论】:

          • 不需要在(( )) 内为变量添加$ 前缀
          【解决方案6】:

          只需使用expr 命令:

          $ expr $x + 1
          8
          

          【讨论】:

            【解决方案7】:

            我们为此使用expr

            echo `expr $x + 1`
            

            【讨论】:

              【解决方案8】:

              试试这个方法:

              echo $(( $X + 1 ))
              

              【讨论】:

                【解决方案9】:

                echo $((x+1)) 也与 echo $(($x+1)) 结果相同

                【讨论】:

                • 您能稍微扩展一下您的答案吗?在外部观察者看来,这似乎缺乏背景。
                猜你喜欢
                • 1970-01-01
                • 2022-01-17
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2017-12-06
                • 2023-03-31
                • 2019-10-08
                相关资源
                最近更新 更多