计算变量,并将其输出到另一个变量


10

我知道的唯一计算器是bc。我想添加1到一个变量,然后输出到另一个变量。

nextnum从计数文件中的字符串得到了变量:

nextnum=`grep -o stringtocount file.tpl.php | wc -w`

可以说nextnum值为1。当添加时1,它将变为2。要计算,我运行:

rownum=`$nextnum+1 | bc`

但出现错误:

1+1: command not found

我只是在计算部分失败。我试过更改反引号,但仍然无法正常工作。我不知道如何计算变量并将其输出到另一个变量。


Answers:


21

中的子字符串` `本身必须是有效命令:

rownum=`echo $nextnum+1 | bc`

但最好使用$( )代替` `

rownum=$(echo $nextnum+1 | bc)

但是没有必要bc,shell可以执行整数运算:

rownum=$((nextnum+1))

甚至在bash和中更简单ksh

((rownum=nextnum+1))

8

您还可以在bash中使用内置算术:

rownum=$((nextnum+1))

这会稍微快一点。


2

绝对正确并完成建议的解决方案,仅提及以前只有Bourne-Shell可用时必须完成的方式,这就是它喜欢的方式:

rownum=`expr $nextnum + 1` 

1

我会使用(如前所述)rownum=$((nextnum+1))((rownum=nextnum+1))但是如果您喜欢标准命令,则可以使用let命令,例如let rownum=$nextnum+1


1
调用let“标准命令”非常容易引起误解。$((…))是标准(POSIX)语法,let而是ksh(和bash,zsh)扩展。
吉尔(Gilles)'所以
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.