为什么这不是 `expr ... | bc -l` 命令有效吗?

为什么这不是 `expr ... | bc -l` 命令有效吗?

我注意到一个错误:

bash:意外标记“-105.5*7+50*3”附近的语法错误

执行以下脚本/表达式时:

expr (-105.5*7+50*3)/20 + (19^2)/7 | bc -l

还有其他方法来评估此类数学/浮点运算吗?

编辑#1

笔记: echoin place 确实expr解决了这个问题,但是我之前使用过exprbc并且它通常可以正常处理浮动,为什么在这种情况下不能解决这个问题,这就是我现在想知道的。

答案1

您之前是否有可能在expr参数周围加了引号,如下所示:

$ expr '(-105.5*7+50*3)/20 + (19^2)/7' | bc -l
22.14642857142857142857

在这种情况下,expr不执行任何算术运算,只打印原始表达式:

$ expr '(-105.5*7+50*3)/20 + (19^2)/7'        
(-105.5*7+50*3)/20 + (19^2)/7

所有计算都发生在 中bc -l,并且整个命令给出了正确的答案(尽管expr实际上的工作原理是echo)。

相关内容