我怎样才能取代''我的bash脚本中的工具?

时间:2018-01-31 04:57:35

标签: linux bash shell awk sed

我的bash脚本中有以下命令:

printf '\n"runtime": %s' "$(bc -l <<<"($a - $b)")"

我需要在大约100台服务器上运行此脚本,我发现其中很少有bc未安装。我不是管理员,无法在丢失的服务器上安装bc

在这种情况下,我可以用什么方法来执行相同的计算?请让我知道新命令应该是什么样子

2 个答案:

答案 0 :(得分:4)

如果您只处理整数,可以使用bash的arithmetic expansion

printf '\n"runtime": %s' $((a - b))

请注意,这确实假设您有可用的bash(正如您所指示的那样)。如果您只有一个精简的Bourne shell(/ bin / sh),则无法使用算术扩展。

答案 1 :(得分:3)

如果您需要一个适用于浮点运算的解决方案,您可以随时回退到Awk。

awk -v a="$a" -v b="$b" 'BEGIN { printf "\n\"runtime\": %s", a-b }' </dev/null

将代码放在BEGIN块中并重定向来自/dev/null的输入是一种常见的解决方法,当您想要使用Awk但没有要循环的行文件时,这就是什么它的设计目的非常明确。