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

相关文章

C++右移运算符的一个小坑及解决

《C++右移运算符的一个小坑及解决》文章指出右移运算符处理负数时左侧补1导致死循环,与除法行为不同,强调需注意补码机制以正确统计二进制1的个数... 目录我遇到了这么一个www.chinasem.cn函数由此可以看到也很好理解总结我遇到了这么一个函数template<typename T>unsigned

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J

shell脚本批量导出redis key-value方式

《shell脚本批量导出rediskey-value方式》为避免keys全量扫描导致Redis卡顿,可先通过dump.rdb备份文件在本地恢复,再使用scan命令渐进导出key-value,通过CN... 目录1 背景2 详细步骤2.1 本地docker启动Redis2.2 shell批量导出脚本3 附录总

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

MySQL中比较运算符的具体使用

《MySQL中比较运算符的具体使用》本文介绍了SQL中常用的符号类型和非符号类型运算符,符号类型运算符包括等于(=)、安全等于(=)、不等于(/!=)、大小比较(,=,,=)等,感兴趣的可以了解一下... 目录符号类型运算符1. 等于运算符=2. 安全等于运算符<=>3. 不等于运算符<>或!=4. 小于运

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

shell中set -u、set -x、set -e的使用

《shell中set-u、set-x、set-e的使用》本文主要介绍了shell中set-u、set-x、set-e的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录✅ 1. set -u:防止使用未定义变量 作用: 示例:❌ 报错示例输出:✅ 推荐使用场景:✅ 2. se

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Linux实现简易版Shell的代码详解

《Linux实现简易版Shell的代码详解》本篇文章,我们将一起踏上一段有趣的旅程,仿照CentOS–Bash的工作流程,实现一个功能虽然简单,但足以让你深刻理解Shell工作原理的迷你Sh... 目录一、程序流程分析二、代码实现1. 打印命令行提示符2. 获取用户输入的命令行3. 命令行解析4. 执行命令

Kotlin运算符重载函数及作用场景

《Kotlin运算符重载函数及作用场景》在Kotlin里,运算符重载函数允许为自定义类型重新定义现有的运算符(如+-…)行为,从而让自定义类型能像内置类型那样使用运算符,本文给大家介绍Kotlin运算... 目录基本语法作用场景类对象数据类型接口注意事项在 Kotlin 里,运算符重载函数允许为自定义类型重