我有以下命令在我的bash脚本中:
printf '\n"runtime": %s' "$(bc -l <<<"($a - $b)")"
我需要在大约100个服务器上运行此脚本,但是我发现其中有几台服务器没有安装bc
。我不是管理员,也无法在缺失的服务器上安装bc
。
在这种情况下,我可以使用什么替代方法来执行相同的计算?请告诉我新命令应该是什么样子。
如果您需要适用于浮点数运算的解决方案,您可以随时转向 Awk。
awk -v a="$a" -v b="$b" 'BEGIN { printf "\n\"runtime\": %s", a-b }' </dev/null
BEGIN
块中,并将输入重定向到/dev/null
是一种常见的解决方法,当您想要使用Awk但没有要循环处理的行文件时,这就是它真正设计的用途。printf '\n"runtime": %s' $((a - b))
<<<here strings
),但仍然值得指出。 - tripleeea
和 b
前加美元符号。 - tripleee$((..))
是 POSIX,所以这不是问题。我更担心需要支持非整数。 - that other guy
/usr/lib/initcpio/busybox
,并且$ /usr/lib/initcpio/busybox bc <<<"33-22"
可以得到11
。 - Darren Ng