Answers:
如果您正在使用bash,则最好使用here字符串而不是管道,如下所示:
bc <<< "scale=2;$var1/$var2"
这将为您节省一个子外壳。
然后,要存储命令的输出,请使用命令替换:
answer=$(bc <<< "scale=2;$var1/$var2")
如果您想要比还要酷的东西bc
,请使用dc(反向抛光计算器):
answer=$(dc <<< "2k $var1 $var2/p")
|
右侧的命令都会在子外壳程序中执行,并且需要花费资源才能打开新的子外壳程序(就像打开新的bash实例来执行该命令一样)。如果可以避免,请避免。在这里,将an echo
传递给管道bc
将bc
在子shell中运行命令,并且从某种意义上说,它是被延迟的(无犯罪),因为bash具有出色的here-string结构<<<
来避免此类愚蠢的事情。
/bin/sh
(dash)代替bash,但是dash没有<<<
。
time for i in {1..10000}; do : <<< ""; done
有time for i in {1..10000}; do echo "" | : ; done
,你会看到一个显着的差异。然后,您说对了,heredoc比herestring快一点。但是将其作为单线打印比较麻烦。