shell数值比较及运算

  • 2019-09-02
  • 0
  • 0

1、shell数值比较及运算

 1.1、常见的算术运算符

运算符 说明 举例
+ 加法 expr $a + $b
减法 expr $a – $b
* 乘法 expr $a * $b
\ 除法 expr $b / $a
% 取余 expr $b % $a
= 赋值 a=$b 将把变量 b 的值赋给 a
** 幂运算
!、&&、|| 逻辑非、逻辑与、逻辑或
=、+=、-=、*= 赋值运算 例如:a+=1相当于a=a+1

1.2、常见的运算命令

运算命令 含义
(( )) 用于整数运算,效率高
let 用于整数运算,类似于“(())”
expr 用于整数运算
bc linux下的一个计算器程序(适合整数及小数运算)
$[ ] 用于整数运算
awk 即可用于整数运算,也可以用于小数运算

1.3、用法案例

案例1、 双小括号(())的用法

运算命令 含义
((i=i+1)) 将i+1的运算结果赋值给i,可以用echo $((i=i+1))输出结果
i=$((i+1)) 表示将表达式运算后赋值给i
# 直接计算
[root@shell scripts]# echo $((10+10))
20
[root@shell scripts]# echo $((10*10))
100

# 赋值运算
[root@shell scripts]# ((a=1+2**3-4%3))
[root@shell scripts]# echo $a
8

# 比较判断,1为真,0为假
[root@shell scripts]# echo $((3<8))
1
[root@shell scripts]# echo $((3>8))
0

案例2、中括号[ ]的用法

[root@shell scripts]# echo $[10+10]
20
[root@shell scripts]# echo $[10-10]
0
[root@shell scripts]# echo $[10*10]
100
[root@shell scripts]# echo $[10/10]
1
[root@shell scripts]# echo $[10-10.5]
-bash: 10-10.5: 语法错误: 无效的算术运算符 (错误符号是 ".5")

案例3、let的用法——>重点

[root@web01 scripts]# let sum=10+10
[root@web01 scripts]# echo $sum
20
[root@web01 scripts]# num1=100
[root@web01 scripts]# num2=50
[root@web01 scripts]# let sum=$num1+$num2
[root@web01 scripts]# echo $sum
150
[root@web01 scripts]# let sum=$num1-$num2
[root@web01 scripts]# echo $sum
50
[root@web01 scripts]# let sum=$num1*$num2
[root@web01 scripts]# echo $sum
5000
[root@web01 scripts]# let sum=$num1/$num2
[root@web01 scripts]# echo $sum
2
# i++ 变量自增
[root@shell scripts]# let i=i+1
[root@shell scripts]# echo $i
1
[root@shell scripts]# let i++
[root@shell scripts]# echo $i
2
[root@shell scripts]# let i++
[root@shell scripts]# echo $i
3

案例4、bc awk python

# bc
[root@shell scripts]# echo 10+10 |bc
20
[root@shell scripts]# echo 10+10.3 |bc  
20.3

# awk
[root@shell scripts]# awk 'BEGIN{print 10+10.5}'
20.5

# python--->直接运算
[root@shell scripts]# python
Python 2.7.5 (default, Oct 30 2018, 23:45:53) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 1+1.3
2.3

案例5、expr用法

判断一个变量值或字符串是否为整数

[root@shell ~]# i=1
[root@shell ~]# expr $i + 6 >/dev/null 2>&1
[root@shell ~]# echo $?
0

[root@shell ~]# expr $i + 6 >/dev/null 2>&1
[root@shell ~]# echo $?
2

面试题1、计算ps aux 结果中 VSZ列数值的结果

# 方法一
[root@shell scripts]# cat psaux.sh 
#!/bin/bash
ps=`ps aux | awk '{print $5}'|grep -v 'VSZ'`
for i in $ps
do
sum=$((i+sum))
done
echo $sum

# 方法二
[root@shell ~]# ps axuf|awk '{print $5}'|grep -v VSZ|tr "\n" "+"|sed -r 's#(.*)#\10\n#g'|bc

评论

还没有任何评论,你来说两句吧

提供支持 - 友情链接 - 衫小寨