Str*_*ger 11 bash shell-script expr
在 shell 脚本中,我们可以expr $a*$b用$(($a+$b)).
但为什么不只是 with (($a+$b)),因为在任何资源中,它(())都是为整数计算而编写的。
所以我们$(())在有变量而不是整数值时使用,是吗?$(())当变量可以接收浮点值时,我们应该使用什么来代替?
Joh*_*024 21
对于算术,expr是古老的。不要使用它。*
$((...))并且((...))非常相似。两者都只做整数计算。区别在于$((...))返回计算结果和((...))不返回 。因此$((...))在echo语句中很有用:
$ a=2; b=3; echo $((a*b))
6
Run Code Online (Sandbox Code Playgroud)
((...)) 当您想分配变量或设置退出代码时很有用:
$ a=3; b=3; ((a==b)) && echo yes
yes
Run Code Online (Sandbox Code Playgroud)如果要进行浮点计算,请使用bc或awk:
$ echo '4.7/3.14' | bc -l
1.49681528662420382165
$ awk 'BEGIN{print 4.7/3.14}'
1.49682
Run Code Online (Sandbox Code Playgroud)*expr顺便说一句,当 glob 不够好并且需要 POSIX 方法来处理正则表达式时,它对于字符串处理仍然很有用。