我唯一知道的计算器是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
我刚刚在计算部分失败了。我尝试过更改反引号但仍然不起作用。我不知道如何计算变量并将其输出到另一个变量。
答案1
里面的子字符串本身` `
必须是有效的命令:
rownum=`echo $nextnum+1 | bc`
但最好使用$( )
而不是` `
:
rownum=$(echo $nextnum+1 | bc)
不过没必要bc
,shell就可以做到整数算术:
rownum=$((nextnum+1))
或者更简单的是bash
and ksh
:
((rownum=nextnum+1))
答案2
您还可以在 bash 中使用内置算术:
rownum=$((nextnum+1))
这会稍微快一些。
答案3
绝对正确并完成建议的解决方案,只需提及以前只有 Bourne-Shell 可用时必须完成的方式,这就是它喜欢的方式:
rownum=`expr $nextnum + 1`
答案4
我会使用(如前面提到的)rownum=$((nextnum+1))
或者((rownum=nextnum+1))
但如果您更喜欢标准命令,您可以使用 let 命令,例如let rownum=$nextnum+1