变量的数值(整数)计算
admin
2023-07-29 15:41:46
0

变量的数值计算常用的有如下几个命令:

  • (())用法:

如果要执行简单的整数运算,只需要特定的算术表达式用"$(("和"))"括起来即可

shell的算术运算符号常置于"$(("......"))"的语法中。这一语法如同双引号功能,除了内嵌双引号无需转义

运算符意义
++ --增加及减少,可前置也可放在结尾
+ - ! ~一元的正号与负号;逻辑与位的取反
*  /  %乘法,除法,与取余
+ -加法,减法
<<= >> =比较符号
== !==相等与不相等
<< >>向左位移   向右位移
&位的AND
^位的异或
|位的或
&&逻辑的AND
||逻辑的OR
?:条件表达式

=   +=   -=    *=  /= %=   

&=   ^=   <<=  >>= |=

赋值运算符a+=1  都相当a=a+1

范例1:shell的算术运算实例如下:

[root@XCN ~]# ((a=1+2**3-4%3)) 
[root@XCN ~]# echo $a
8
[root@XCN ~]# b=$((a=1+2**3-4%3))
[root@XCN ~]# echo $b
8
[root@XCN ~]# echo $((a=1+2**3-4%3))  
8

提示:上面是三种不同的变量计算定义和使用的方式

[root@XCN ~]# echo $((a+=1))   #相当a=a+1
9
[root@XCN ~]# echo $((a++))  
9
[root@XCN ~]# echo $((a--))   
10
[root@XCN ~]# echo $((3>2))    #比较大小
1 
[root@XCN ~]# echo $((3<2))     #比较大小
0

提示:

  1. **为幂运算:%为取模运算(就是除法当中取余数),加减乘除

  2. 上面涉及到的参数变量必须为整数(整型),不能是小数(符点数)或者字符串后面的bc命令可以进行浮点数运算,但一般较少用到,下文会讲解。提醒下,你可以直接在shell脚本中使用上述命令进行计算。

  3. echo $((a++))和echo $((a--))表示先输出a自身的值,然后在进行++--的运算,echo $((++a)和

$((--a))表示先进行++ --的运算,在输出a自身的值

记忆方法:变量a在前,表达式的值为a,然后a自增或自减,变量a在符号后,表达式值自增或自减,然后a值自增或自减


范例2:--,++在变量前后的举例理解:

[root@XCN ~]# echo $((3--2)) 
5
[root@XCN ~]# echo $((3==2))   
0

范例3:定义变量计算的例子

[root@XCN ~]# xcn=99
[root@XCN ~]# echo $(($xcn + 1))
100
[root@XCN ~]# echo $(( $xcn + 1 ))
100
[root@XCN ~]# xcn=$(( $xcn + 1 ))   #还可以赋值给变量然后输出变量
[root@XCN ~]# echo $xcn
100

#提示(())中的变量也可以去掉$符号
[root@XCN ~]# unset xcn
[root@XCN ~]# xcn=99
[root@XCN ~]# echo $((xcn+1))
100

范例4:各种(())的计算命令行执行例子:

[root@XCN ~]# echo $((100/5))   #除法 取商数
20
[root@XCN ~]# echo $((100/5))
20
[root@XCN ~]# echo $((100+5)) 
105
[root@XCN ~]# echo $((100*5)) 
500
[root@XCN ~]# echo $((100-5))  
95
[root@XCN ~]# echo $((100**5))   #幂
10000000000
[root@XCN ~]# echo $((100%5))   #取模,余数
0

范例5:各种(())运算的shell脚本例子

#!/bin/bash
a=6
b=2
echo "a-b =$(($a-$b))"
echo "a+b =$(($a+$b))"
echo "a*b =$(($a*$b))"
echo "a/b =$(($a/$b))"
echo "a**b =$(($a**$b))"
echo "a%b =$(($a%$b))"


执行结果如下:
[root@XCN day2]# sh jisuan.sh 
a-b =4
a+b =8
a*b =12
a/b =3
a**b =36
a%b =0

范例6:实践考试题,内容如下:

把a,b两个变量通过命令行脚本传参的方式实现上面混合运算脚本的功能

a=$1
b=$2
echo "a-b =$(($a-$b))"
echo "a+b =$(($a+$b))"
echo "a*b =$(($a*$b))"
echo "a/b =$(($a/$b))"
echo "a**b =$(($a**$b))"
echo "a%b =$(($a%$b))"

执行结果如下:
[root@XCN day2]# sh jisuan.sh 6 2
a-b =4
a+b =8
a*b =12
a/b =3
a**b =36
a%b =0

相关内容

热门资讯

按实际收入核定社保基数?多地律... 作者 | 第一财经 安然然今年以来,浙江、陕西、江苏、山东、天津等地陆续有律师反映,自己所在律所接到...
云南宾川1小时发生3次4级以上... 澎湃新闻记者 熊强据中国地震台网测定,7月4日17时许,云南省大理州宾川县在一个小时内接连发生3次四...
凤凰晚报丨河南女孩高考699分... 今日人物【浙江阿姨资助12年的河南女孩,高考699分!】近日,河南高考成绩公布,平顶山郏县实验高中的...
视频丨这轮高温还要持续多久?气... 在刚刚过去的6月,我国多地高温天数打破了当地的纪录,而进入7月的这三天,大范围的高温天气不仅无缝衔接...
开空调时屋里放盆水有用吗 这个答案是肯定的!在空调房间内放1到2盆水的话对整个房间的空气舒适度是会有到一定帮助的!因为空调在制...
除湿功能开过后在开制冷感觉效果... 空调制冷功能也可以除湿,如果需要开冷气和除湿就开制冷,除湿功能也可以制冷,但是程序是除湿为主,不会考...
空调的除湿模式有用吗 问题:空调的除湿模式有用吗回答:1、这种模式是有用的,通常空调的除湿模式可以将室内的空气中的水蒸气凝...
美的空调上显示尘满是怎么回事 这个显示说明空调的回风过滤网已经积满灰尘,需要清理了。这会直接影响空调室内机的风量,因为回风过滤网的...
求解冷藏展示柜什么牌子好,冷藏... 摘要:冷藏展示柜品牌有澳柯玛,海尔,容声等,价格从一千多元到上万元不等,一般用在超市或者是饭店、小吃...
美国老头乐狂欢,成为社交硬通货... 谁能想到,在中国街头被交警叔叔频频劝退的“老头乐”,摇身一变,竟然成了美国中产社区的“社交硬通货”?...