【问题标题】:What is the right bash syntax to add two numbers from string array?从字符串数组中添加两个数字的正确 bash 语法是什么?
【发布时间】:2013-05-30 18:58:24
【问题描述】:

我必须从管道中读取一个字符串,并且我正在使用

read -a line 

为此。

然后我需要从字符串中计算两个数字(此时字符串包含的数字正好在我需要的地方)。

然后我想写这个:

number= 10*${line[4]} + ${line[5]}

并从 bash 中获取这些错误:

local: `10*1': not a valid identifier
local: `+': not a valid identifier

那些字符串字段将被转换为数字(“50”到50等)并参与表达的正确写法?

【问题讨论】:

  • 获取数字的 bash hack 就像 $((var+0)) 一样

标签: arrays bash syntax


【解决方案1】:

我们来看一个例子:

$ a[0]=12
$ a[1]=23
$ res=$(( ${a[0]} + ${a[1]}))
$ echo $res
35

所以你需要这样做

num=$(( 10*${line[4]} + ${line[5]}))

【讨论】:

    【解决方案2】:
    a=(2 3 4)
    let sum=${a[0]}+${a[1]}+${a[2]}
    echo $sum
    

    【讨论】:

    • 在这种情况下,您必须小心转义乘法,以免 * 扩展为文件名
    【解决方案3】:

    另一种计算表达式的方法:

    result=$(expr "1" + "2")
    echo $result #=> 3
    

    查看 expr 手册页:

    man expr
    

    【讨论】:

      猜你喜欢
      • 2014-12-08
      • 1970-01-01
      • 2020-10-27
      • 2019-09-13
      • 1970-01-01
      • 2012-02-25
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多