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

2024-05-29 18:18

本文主要是介绍Shell 必知必会 | 三、Shell 算术运算符,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、算术运算符

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 ~]#

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

三、总结

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

这篇关于Shell 必知必会 | 三、Shell 算术运算符的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1014279

相关文章

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

SpringShell命令行之交互式Shell应用开发方式

《SpringShell命令行之交互式Shell应用开发方式》本文将深入探讨SpringShell的核心特性、实现方式及应用场景,帮助开发者掌握这一强大工具,具有很好的参考价值,希望对大家有所帮助,如... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

Java逻辑运算符之&&、|| 与&、 |的区别及应用

《Java逻辑运算符之&&、||与&、|的区别及应用》:本文主要介绍Java逻辑运算符之&&、||与&、|的区别及应用的相关资料,分别是&&、||与&、|,并探讨了它们在不同应用场景中... 目录前言一、基本概念与运算符介绍二、短路与与非短路与:&& 与 & 的区别1. &&:短路与(AND)2. &:非短

shell脚本自动删除30天以前的文件(最新推荐)

《shell脚本自动删除30天以前的文件(最新推荐)》该文章介绍了如何使用Shell脚本自动删除指定目录下30天以前的文件,并通过crontab设置定时任务,此外,还提供了如何使用Shell脚本删除E... 目录shell脚本自动删除30天以前的文件linux按照日期定时删除elasticsearch索引s

Linux中shell解析脚本的通配符、元字符、转义符说明

《Linux中shell解析脚本的通配符、元字符、转义符说明》:本文主要介绍shell通配符、元字符、转义符以及shell解析脚本的过程,通配符用于路径扩展,元字符用于多命令分割,转义符用于将特殊... 目录一、linux shell通配符(wildcard)二、shell元字符(特殊字符 Meta)三、s

shell脚本快速检查192.168.1网段ip是否在用的方法

《shell脚本快速检查192.168.1网段ip是否在用的方法》该Shell脚本通过并发ping命令检查192.168.1网段中哪些IP地址正在使用,脚本定义了网络段、超时时间和并行扫描数量,并使用... 目录脚本:检查 192.168.1 网段 IP 是否在用脚本说明使用方法示例输出优化建议总结检查 1

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

【重学 MySQL】十九、位运算符的使用

【重学 MySQL】十九、位运算符的使用 示例检查权限添加权限移除权限 在 MySQL 中,位运算符允许你直接在整数类型的列或表达式上进行位级操作。这些操作对于处理那些需要在二进制表示上进行直接修改或比较的场景特别有用,比如权限管理、状态标记等。 &(位与) 对两个数的二进制表示进行位与操作。只有两个相应的二进制位都为 1 时,结果的该位才为 1,否则为 0。 |(位

C语言程序设计(数据类型、运算符与表达式)

一、C的数据类型 C语言提供的数据类型: 二、常量和变量 2.1常量和符号常量 在程序运行过程中,其值不能被改变的量称为常量。 常量区分为不同的类型: 程序中用#define(预处理器指令)命令行定义变量将代表常量,用一个标识符代表一个常量,称为符合常量。 2.2变量 变量代表内存中具有特定属性的一个存储单元,用来存放数据,在程序运行期间,这些值是可以 改变的。 变