为什么我的 Shell 算法会出现语法错误?

3sd*_*dmx 5 shell

我的 linux shell 脚本 ( sh)有问题。

我正在尝试编写一个计算组合的脚本,但我认为在尝试计算能力时会溢出。所以,我正在尝试另一种技术。在这种技术中,我使用了这个:

a=`expr $var1 \* $var2 / $var3`
Run Code Online (Sandbox Code Playgroud)

这是给出错误,显然,我不能这样做:

a=`expr ($var1 \* $var2) / $var3`
Run Code Online (Sandbox Code Playgroud)

因为这也会产生错误。

我该怎么做?

msw*_*msw 6

您可以dc用于任意精度的结果:

precision=4 var1=3 var2=4 var3=5
a=`echo "$precision k $var1 $var2 * $var3 /p" | dc`
Run Code Online (Sandbox Code Playgroud)

自 1977 年左右以来,它应该适用于几乎所有 Unix 变体。如果你知道你有可用的 gnu dc 更简洁

a=`dc -e "$precision k $var1 $var2 * $var3 /p"`
Run Code Online (Sandbox Code Playgroud)

可以使用。