Shell (()) 括号对整数进行数学运算

网友投稿 653 2022-09-04

Shell (()) 括号对整数进行数学运算

Shell (()) 括号对整数进行数学运算

双小括号 (( )) 是 Bash Shell 中专门用来进行整数运算的命令,它的效率很高,写法灵活,是企业运维中常用的运算命令。 注意:(( )) 只能进行整数运算,不能对小数(浮点数)或者字符串进行运算,bc 命令可以用于小数运算。

Shell (( )) 的用法

双小括号 (( )) 的语法格式为:

((表达式))

通俗地讲,就是将数学运算表达式放在​​((​​​和​​))​​​之间。表达式可以只有一个,也可以有多个,多个表达式之间以逗号​​,​​​分隔。对于多个表达式的情况,以最后一个表达式的值作为整个 (( )) 命令的执行结果。 可以使用​​​$​​​获取 (( )) 命令的结果,这和使用​​$​​获得变量值是类似的。

表1:(( )) 的用法

运算操作符/运算命令

说明

((a=10+66)

((b=a-15))

((c=a+b))

这种写法可以在计算完成后给变量赋值。以 ((b=a-15)) 为例,即将 a-15 的运算结果赋值给变量 c。


注意,使用变量时不用加​​$​​前缀,(( )) 会自动解析变量名。

a=$((10+66)

b=$((a-15))

c=$((a+b))

可以在 (( )) 前面加上​​$​​符号获取 (( )) 命令的执行结果,也即获取整个表达式的值。以 c=$((a+b)) 为例,即将 a+b 这个表达式的运算结果赋值给变量 c。


注意,类似 c=((a+b)) 这样的写法是错误的,不加​​$​​就不能取得表达式的结果。

((a>7 && b==c))

(( )) 也可以进行逻辑运算,在 if 语句中常会使用逻辑运算。

echo $((a+10))

需要立即输出表达式的运算结果时,可以在 (( )) 前面加​​$​​符号。

((a=3+5, b=a+10))

对多个表达式同时进行计算。

在 (( )) 中使用变量无需加上​​$​​前缀,(( )) 会自动解析变量名,这使得代码更加简洁,也符合程序员的书写习惯。

Shell (( )) 实例演示

【实例1】利用 (( )) 进行简单的数值计算。

[root@~]# echo $((1+1))2[root@~]# echo $((6-3))3[root@~]# i=5[root@~]# ((i=i*2)) #可以简写为 ((i*=2))。[root@~]# echo $i #使用 echo 输出变量结果时要加 $。10

【实例2】用 (( )) 进行稍微复杂一些的综合算术运算。

[root@~]# ((a=1+2**3-4%3))[root@~]# echo $a8[root@~]# b=$((1+2**3-4%3)) #运算后将结果赋值给变量,变量放在了括号的外面。[root@~]# echo $b8[root@~]# echo $((1+2**3-4%3)) #也可以直接将表达式的结果输出,注意不要丢掉 $ 符号。8[root@~]# a=$((100*(100+1)/2)) #利用公式计算1+2+3+...+100的和。[root@~]# echo $a5050[root@~]# echo $((100*(100+1)/2)) #也可以直接输出表达式的结果。5050

【实例3】利用 (( )) 进行逻辑运算。

[root@~]# echo $((3<8)) #3<8 的结果是成立的,因此,输出了 1,1 表示真1[root@~]# echo $((8<3)) #8<3 的结果是不成立的,因此,输出了 0,0 表示假。0[root@~]# echo $((8==8)) #判断是否相等。1[root@~]# if ((8>7&&5==5))> then> echo yes> fiyes

【实例4】利用 (( )) 同时对多个表达式进行计算。

[root@~]# ((a=3+5,b=a+10)) #先计算第一个表达式,再计算第二个表达式[root@~]# echo $a $b8 18[root@~]# c=$((4+8,a+b)) #以最后一个表达式的结果作为整个(())命令的执行结果[root@~]# echo $c26

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:知乎千万级高性能网关是如何搭建的?
下一篇:Redis 聊聊主从复制需要注意的几个方面
相关文章

 发表评论

暂时没有评论,来抢沙发吧~