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 方法来处理正则表达式时,它对于字符串处理仍然很有用。