Shell 必知必会 | 三、Shell 算术运算符

举报
Linux猿 发表于 2021/08/04 23:11:35 2021/08/04
【摘要】 目录 一、算术运算符 1.1 运算符 1.2 优先级 1.3 运算方法 1.3.1 expr 算术表达式 1.3.2 $[ 算术表达式 ] 1.3.3 $((算术表达式)) 二、实例 2.1  * 、/  和 %   2.2  + 和 - 2.3  == 和 != 2.4&...

目录

一、算术运算符

1.1 运算符

1.2 优先级

1.3 运算方法

1.3.1 expr 算术表达式

1.3.2 $[ 算术表达式 ]

1.3.3 $((算术表达式))

二、实例

2.1  * 、/  和 %  

2.2  + 和 -

2.3  == 和 !=

2.4  =

三、总结


Shell 在使用的过程中经常需要用到算术运算符,属于比较简单的一块,主要是记住运算方法,下面结合实例来说明下。

一、算术运算符

1.1 运算符

表1 算术运算符
运算符 含义      
+ 加法运算符
- 减法运算符
* 乘法运算符
/ 除法运算符
% 取余运算符
= 赋值运算符
== 判断相等运算符
!= 判断不等于运算符

1.2 优先级

表2 算术运算符优先级
优先级 说明
* 、/、% 乘、除、取余
+、- 加、减
==、!= 相等、不等
= 赋值

1.3 运算方法

默认情况下 Shell 中的运算都是看作字符串在操作,不会直接进行算术运算,但是,算术运算也有很多方法,这里介绍几种常用的方法,其中 a = 11:

1.3.1 expr 算术表达式

使用 expr 进行算术运算需要注意两个问题:

(1)运算符之间要有空格,例如:expr<空格>变量<空格>运算符,如下所示:


  
  1. [root@localhost ~]# expr 2 + 3
  2. 5
  3. [root@localhost ~]# expr2 + 3
  4. bash: expr2: 未找到命令...
  5. 相似命令是: 'expr'
  6. [root@localhost ~]# expr 2+3
  7. 2+3
  8. [root@localhost ~]# expr 2+ 3
  9. expr: 语法错误
  10. [root@localhost ~]#

在上述计算中,只有第一个 expr 2 + 3 是计算正确的,不要忘记空格哦!

(2)乘法运算符使用 \*,乘法运算符前需要加 \,如下所示:


  
  1. [root@localhost ~]# expr 2 * 3
  2. expr: 语法错误
  3. [root@localhost ~]# expr 2 \* 3
  4. 6
  5. [root@localhost ~]#

1.3.2 $[ 算术表达式 ]

这种方法没有格式的限制,如下所示:


  
  1. [root@localhost ~]# echo $[5+9]
  2. 14
  3. [root@localhost ~]# echo $[ 5+9 ]
  4. 14
  5. [root@localhost ~]# echo $[ 5 + 9 ]
  6. 14
  7. [root@localhost ~]# a=11
  8. [root@localhost ~]# echo $[ $a + 9 ]
  9. 20
  10. [root@localhost ~]#

1.3.3 $((算术表达式))

这种方式和 $[算术表达式] 一样,如下所示:


  
  1. [root@localhost ~]# echo $((5+9))
  2. 14
  3. [root@localhost ~]# echo $((5 + 9))
  4. 14
  5. [root@localhost ~]# echo $(( 5 + 9 ))
  6. 14
  7. [root@localhost ~]# echo $(( $a * 9 ))
  8. 99
  9. [root@localhost ~]#

二、实例

在以下实例中,a = 11, b = 10。

2.1  * 、/  和 %  


  
  1. [root@localhost ~]# echo $[$a/$b]
  2. 1
  3. [root@localhost ~]# echo $[$a%$b]
  4. 1
  5. [root@localhost ~]# echo $[$a*$b]
  6. 110
  7. [root@localhost ~]# echo $(($a/$b))
  8. 1
  9. [root@localhost ~]# echo $((100/3))
  10. 33
  11. [root@localhost ~]# echo $(($a/$b))
  12. 1
  13. [root@localhost ~]# echo $((15%4))
  14. 3
  15. [root@localhost ~]# expr $a \* $b
  16. 110
  17. [root@localhost ~]# expr $a / $b
  18. 1
  19. [root@localhost ~]# expr $a % $b
  20. 1
  21. [root@localhost ~]#

注意:上面三个运算方法都只支持整数运算,关于带小数的运算会单独一篇文章讲解,同时也注意使用 expr 计算时,乘法运算符前需要加反斜杠转化。 

2.2  + 和 -


  
  1. [root@localhost ~]# echo $[$a+$b]
  2. 21
  3. [root@localhost ~]# echo $[$a-$b]
  4. 1
  5. [root@localhost ~]# echo $[$b-$a]
  6. -1
  7. [root@localhost ~]# echo $(($a+$b))
  8. 21
  9. [root@localhost ~]# echo $((10-11))
  10. -1
  11. [root@localhost ~]# expr $a + $b
  12. 21
  13. [root@localhost ~]# expr $b - $a
  14. -1
  15. [root@localhost ~]#

2.3  == 和 !=

运算符 == 和 != 在等式成立的时候返回1,不成立返回0,如下所示:


  
  1. [root@localhost ~]# echo $[$a == $b]
  2. 0
  3. [root@localhost ~]# echo $[$a != $b]
  4. 1
  5. [root@localhost ~]# echo $(($a == $b))
  6. 0
  7. [root@localhost ~]# echo $(($a != $b))
  8. 1
  9. [root@localhost ~]# expr $a == $b
  10. 0
  11. [root@localhost ~]# expr $a != $b
  12. 1
  13. [root@localhost ~]#

2.4  =

赋值运算符就简单了,将赋值运算符右边计算的值赋值到左边的变量中,注意是变量哦!如下所示:


  
  1. [root@localhost ~]# c=$(expr $a + $b)
  2. [root@localhost ~]# echo $c
  3. 21
  4. [root@localhost ~]# c=$(($a*$b))
  5. [root@localhost ~]# echo $c
  6. 110
  7. [root@localhost ~]# c=$(($a/$b))
  8. [root@localhost ~]# echo $c
  9. 1
  10. [root@localhost ~]# c=$[$a/$b]
  11. [root@localhost ~]# echo $c
  12. 1
  13. [root@localhost ~]#

注意:赋值运算符两边是没有空格的。 

三、总结

算术运算符在使用的时候注意格式问题,还有就是一些运算方法只支持整数运算,感觉不错点赞支持下吧!关注我有跟多干货!

文章来源: blog.csdn.net,作者:Linux猿,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/nyist_zxp/article/details/113447594

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。