我知道他们俩都能做简单的算术。我想知道什么时候使用其中一种会比使用另一种更容易。
我知道 expr 根据参数计算表达式,而 bcl 根据标准 in 计算,但是还有什么其他区别?
具体来说,是否存在一个人可以执行而另一个人不能执行的任务?
答案1
具体来说,是否存在一个人可以执行而另一个人不能执行的任务?
一方面,bc
支持大数字,expr
最高可达 2^63-1:
$ expr 9223372036854775807 + 1
-9223372036854775807
$ echo "9223372036854775807 + 1" | bc
9223372036854775808
bc
还有指数和平方根运算,但expr
完全缺乏:
$ echo "2^1024" | bc
17976931348623159077293051907890247336179769789423065727343008115773\
26758055009631327084773224075360211201138798713933576587897688144166\
22492847430639474124377767893424865485276302219601246094119453082952\
08500576883815068234246288147391311054082723716335051068458629823994\
7245938479716304835356329624224137216
$ echo "scale=100; sqrt(2)" | bc
1.414213562373095048801688724209698078569671875376948073176679737990\
7324784621070388503875343276415727