我注意到一个错误:
bash:意外标记“-105.5*7+50*3”附近的语法错误
执行以下脚本/表达式时:
expr (-105.5*7+50*3)/20 + (19^2)/7 | bc -l
还有其他方法来评估此类数学/浮点运算吗?
编辑#1
笔记: echo
in place 确实expr
解决了这个问题,但是我之前使用过expr
,bc
并且它通常可以正常处理浮动,为什么在这种情况下不能解决这个问题,这就是我现在想知道的。
答案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
)。