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

举报
Linux猿 发表于 2021/08/04 23:11:35 2021/08/04
2.8k+ 0 0
【摘要】 目录 一、算术运算符 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<空格>变量<空格>运算符,如下所示:


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

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

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


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

1.3.2 $[ 算术表达式 ]

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


      [root@localhost ~]# echo $[5+9]
      14
      [root@localhost ~]# echo $[ 5+9 ]
      14
      [root@localhost ~]# echo $[ 5 + 9 ]
      14
      [root@localhost ~]# a=11
      [root@localhost ~]# echo $[ $a + 9 ]
      20
      [root@localhost ~]#
  
 

1.3.3 $((算术表达式))

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


      [root@localhost ~]# echo $((5+9))
      14
      [root@localhost ~]# echo $((5 + 9))
      14
      [root@localhost ~]# echo $(( 5 + 9 ))
      14
      [root@localhost ~]# echo $(( $a * 9 ))
      99
      [root@localhost ~]#
  
 

二、实例

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

2.1  * 、/  和 %  


      [root@localhost ~]# echo $[$a/$b]
      1
      [root@localhost ~]# echo $[$a%$b]
      1
      [root@localhost ~]# echo $[$a*$b]
      110
      [root@localhost ~]# echo $(($a/$b))
      1
      [root@localhost ~]# echo $((100/3))
      33
      [root@localhost ~]# echo $(($a/$b))
      1
      [root@localhost ~]# echo $((15%4))
      3
      [root@localhost ~]# expr $a \* $b
      110
      [root@localhost ~]# expr $a / $b
      1
      [root@localhost ~]# expr $a % $b
      1
      [root@localhost ~]#
  
 

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

2.2  + 和 -


      [root@localhost ~]# echo $[$a+$b]
      21
      [root@localhost ~]# echo $[$a-$b]
      1
      [root@localhost ~]# echo $[$b-$a]
      -1
      [root@localhost ~]# echo $(($a+$b))
      21
      [root@localhost ~]# echo $((10-11))
      -1
      [root@localhost ~]# expr $a + $b
      21
      [root@localhost ~]# expr $b - $a
      -1
      [root@localhost ~]#
  
 

2.3  == 和 !=

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


      [root@localhost ~]# echo $[$a == $b]
      0
      [root@localhost ~]# echo $[$a != $b]
      1
      [root@localhost ~]# echo $(($a == $b))
      0
      [root@localhost ~]# echo $(($a != $b))
      1
      [root@localhost ~]# expr $a == $b
      0
      [root@localhost ~]# expr $a != $b
      1
      [root@localhost ~]#
  
 

2.4  =

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


      [root@localhost ~]# c=$(expr $a + $b)
      [root@localhost ~]# echo $c
      21
      [root@localhost ~]# c=$(($a*$b))
      [root@localhost ~]# echo $c
      110
      [root@localhost ~]# c=$(($a/$b))
      [root@localhost ~]# echo $c
      1
      [root@localhost ~]# c=$[$a/$b]
      [root@localhost ~]# echo $c
      1
      [root@localhost ~]#
  
 

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

三、总结

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

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

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

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

作者其他文章

评论(0

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

    全部回复

    上滑加载中

    设置昵称

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

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

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