2

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

read -a line 

为了那个原因。

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

然后我试着写这个:

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

并从 bash 中获取这些错误:

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

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

4

3 回答 3

5

让我们看一个例子:

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

所以在你的情况下你需要做

num=$(( 10*${line[4]} + ${line[5]}))
于 2013-05-30T19:02:02.833 回答
2
a=(2 3 4)
let sum=${a[0]}+${a[1]}+${a[2]}
echo $sum
于 2013-05-30T19:02:39.440 回答
1

评估表达式的另一种方法:

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

请参阅 expr 手册页:

man expr
于 2013-05-30T19:40:33.333 回答