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脚本快速检查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变量 变量代表内存中具有特定属性的一个存储单元,用来存放数据,在程序运行期间,这些值是可以 改变的。 变

第二十四章 rust中的运算符重载

注意 本系列文章已升级、转移至我的自建站点中,本章原文为:rust中的运算符重载 目录 注意一、前言二、基本使用三、常用运算符四、通用约束 一、前言 C/C++中有运算符重载这一概念,它的目的是让即使含不相干的内容也能通过我们自定义的方法进行运算符操作运算。 比如字符串本身是不能相加的,但由于C++中的String重载了运算符+,所以我们就可以将两个字符串进行相加、但实际

站长常用Shell脚本整理分享(全)

站长常用Shell脚本整理分享 站长常用Shell脚本整理分享1-10 站长常用Shell脚本整理分享11-20 站长常用Shell脚本整理分享21-30 站长常用Shell脚本整理分享31-40 站长常用Shell脚本整理分享41-50 站长常用Shell脚本整理分享51-59 长期更新

Shell脚本实现自动登录服务器

1.登录脚本 login_server.sh #!/bin/bash# ReferenceLink:https://yq.aliyun.com/articles/516347#show all host infos of serverList.txtif [[ -f ./serverList.txt ]]thenhostNum=`cat ./serverList.txt | wc -l`e

《C++中的移动构造函数与移动赋值运算符:解锁高效编程的最佳实践》

在 C++的编程世界中,移动构造函数和移动赋值运算符是提升程序性能和效率的重要工具。理解并正确运用它们,可以让我们的代码更加高效、简洁和优雅。 一、引言 随着现代软件系统的日益复杂和对性能要求的不断提高,C++程序员需要不断探索新的技术和方法来优化代码。移动构造函数和移动赋值运算符的出现,为解决资源管理和性能优化问题提供了有力的手段。它们允许我们在不进行不必要的复制操作的情况下,高效地转移资源

[轻笔记]ubuntu shell脚本切换conda环境

source /home/yourhostname/anaconda3/etc/profile.d/conda.sh # 关键!!!conda activate env_name

[轻笔记] ubuntu Shell脚本实现监视指定进程的运行状态,并能在程序崩溃后重启动该程序

根据网上博客实现,发现只能监测进程离线,然后对其进行重启;然而,脚本无法打印程序正常状态的信息。自己通过不断修改测试,发现问题主要在重启程序的命令上(需要让重启的程序在后台运行,不然会影响监视脚本进程,使其无法正常工作)。具体程序如下: #!/bin/bashwhile [ 1 ] ; dosleep 3if [ $(ps -ef|grep exe_name|grep -v grep|