在命令行中计算的最快方法是什么?

在命令行中计算的最快方法是什么?

有没有更快的方法在命令行中计算以下内容:

echo "4 * 5" | bc

答案1

我想添加一个解决方案Z壳,不幸的是我几乎一无所知,这样我就可以将其改编为鱼类语法。抱歉!

我定义一个函数c

function c { echo $@ | bc }

并且我为 设置了一个别名c,这样就不会发生文件通配符(并且我可以省略表达式周围的引号,尤其是包括星号的引号:

alias c="noglob c"

然后我可以做这样的计算:

$ c 4*5
20
$ c 1.5*2^8
384.0

ENTER这比实际要计算的表达式多3 次击键(包括最后的)。可以改进...也许使用键绑定。

答案2

POSIX 兼容 Shelldash ksh bash zsh还有很多)

有一个内置方法可以实现这一点。使用$(())构造函数来实现它:

echo $((4 * 5))

它不调用任何函数,因此速度更快。

让我们比较一下以下几种方式(zsh):

$ time ( echo "4 * 5" | bc )
20
( echo "4 * 5" | bc; )  0.00s user 0.00s system 61% cpu 0.007 total

$ time ( echo $((4 * 5)) )
20
( echo $((4 * 5)); )  0.00s user 0.00s system 48% cpu 0.001 total

但是,$(())有很多限制并且只能进行基本的算术运算。

C 壳csh tcsh

我不认为有一个单一的解决方案C 壳s. 但是,可以执行以下操作:

@ i = 4 * 5 ; printf "$i\n"

可能,math "4 * 5"效果更快。

答案3

比更好的答案(在这种情况下)更通用的$(( ))答案是使用<<<

例如bc <<< "4 * 5"这里我们不需要使用echo,只需将参数发送到标准输入。

相关内容