假设我有一个名为的命令foo
,它在调用时会在屏幕上打印一个数字:
$ foo
3
假设我还有另一个命令,bar
它在调用时会在屏幕上打印另一个数字:
$ bar
5
我想编写一个 shell 脚本,将foo
和的输出算术相加bar
(3+5=8)。我该怎么做?(命令的输出事先是不知道的。它们只是上次运行时碰巧是 3 和 5。它们可能是其他值。)
答案1
使用 bashlet
来评估算术表达式。
#!/bin/bash
a=`echo 3`
b=`echo 5`
let c=$a+$b
echo $c
echo
只需用您的程序调用替代这些调用即可。
答案2
另一种方法let
是使用双括号语法:
(( c = $(foo) + $(bar) ))
或者
echo $(( $(foo) + $(bar) ))
或者使用变量,可以省略等号右侧的美元符号:
(( c += $(foo) + num ))
(这也说明了增量分配)
如果您使用非整数,则可以使用bc
:
echo "$(foo) + $(bar)" | bc
或者
c=$(echo "$(foo) + $(bar)" | bc)
使用双括号的一个优点是可以在操作数和运算符周围放置空格,以使内容更具可读性:
(( c = ( a + b ) * ( i - j ) ))
答案3
重击:
bc < <({ foo ; echo + ; bar ; } | tr '\n' ' ' ; echo)
如果输出仅为整数:
$(( $(foo) + $(bar) ))