shell数值变量的运算

数值变量的运算及特殊变量

在 Bash Shell 环境中,只能进行简单的整数运算,不支持小数运算
整数值的运算主要通过内部命令 expr 进行
运算符与变量之间必须有至少一个空格。

运算内容:加(+)、减(-)、乘(*)、除(/)、取余(%)
运算符号: ( ( ) ) 和 (()) 和 (())[]
运算命令:expr和let
运算工具:bc(系统自带)

expr命令(不仅可以运算,还支持输出到屏幕)

常用的 几种运算符如下所述。 
+:加法运算。 
-:减法运算。 
*:乘法运算,注意不能仅使用“*”符号,否则将被当成文件通配符。 
/:除法运算。 
%:求模运算,又称为取余运算,用来计算数值相除后的余数。

例1

[root@server myscripts]# expr 1 + 1
2
[root@server myscripts]# expr 1+1
1+1
[root@server myscripts]# expr 2 * 2
expr: 语法错误
[root@server myscripts]# expr 2 * 2 //乘法需要转义
4
[root@server myscripts]# expr 2 '
’ 2 //乘法也可以用单引号表示但没太大必要因为只有一个字符
4

expr不仅支持常量还支持变量的运算:
例2
[root@localhost ~]# X=35
[root@localhost ~]# Y=16
[root@localhost ~]# expr $X + 5
40
[root@localhost ~]# expr $X + $Y
51
[root@localhost ~]# expr $X - $Y
19
[root@localhost ~]# expr $X * $Y
560
[root@localhost ~]# expr $X / $Y
2
[root@localhost ~]# expr $X % $Y
3

例3

sum=expr $Y \* $Y \* $Y

echo $sum

例4
#!/bin/bash
#1.定义输出数字
read -p “请输入第一个数字:” num1
read -p “请输入第二个数字:” num2
#2.执行加法运算
expr $num1 + $num2

echo “求和数:$sum”

其他看时间是否够用

[ ] 和 []和 [](()) 必须要和echo在一起用因为他只能运算无法输出结果

[root@server myscripts]# echo $((1+1))
2
[root@server myscripts]# echo $((5-2))
3

[root@client opt]# echo $((a-b))
7
[root@client opt]# echo $((b-a)) //可以有负数
-7

$[]整数运算

[root@server myscripts]# echo [ 10 ∗ 10 ] / / [10*10] // [1010]//[]里的*不需要转义
100
[root@server myscripts]# echo $[10%8]
2
[root@server myscripts]# echo $[10/8]
1
[root@server myscripts]# echo $[10/12]
0
[root@server myscripts]# echo $[10%12]
10

[ ] 变 量 的 运 算 , 可 省 略 [ ] 里 的 []变量的运算,可省略[]里的 [][]
[root@client opt]# echo [ [ [a+$b]
13
[root@client opt]# echo $[a+b]
13
[root@client opt]# echo $[a-b]
7
[root@client opt]# echo $[a*b]
30
[root@client opt]# echo $[a/b]
3
[root@client opt]# echo $[a%b]
1

[root@client opt]# echo $[a+b+c]
38
[root@client opt]# echo $[a+b*c] //遵循先乘除后加减,否则需要用括号括起来表示优先运算
75
[root@client opt]# echo $[(a+b)*c]
360

let运算

let的运算可以改变变量本身的值,但不显示结果,需要echo,其他的运算方式可以做运算但不改变变量本身的值
[root@server myscripts]# n=1;let n=n+1;echo $n
2
[root@server myscripts]# let n+=2 //n=n+2
[root@server myscripts]#
[root@server myscripts]# echo $n
4
[root@server myscripts]# let n=n**2 //求幂,4的2次方
[root@server myscripts]# echo $n
16
[root@server myscripts]# let n++ //n自加1
[root@server myscripts]# let n-- //n自减1

[root@client opt]# echo $a
13
[root@client opt]# echo $[a++] //先输出再自增1,这时a的值已经变了
13
[root@client opt]# echo $a
14
[root@client opt]# echo $[++a] //先自增1再输出,所以直接输出了变化后的值
15
[root@client opt]# echo $a
15

bc运算

使用bc进行运算,支持小数运算,但在脚本中不可直接使用否则会进入交互界面,可以用echo结合管道使用
[root@localhost ~]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty’.
10/3
3
scale=3 //指定小数点后几位
10/3
3.333

[root@localhost ~]# echo “scale=3;10/3” | bc
3.33310

[root@client ~]# echo “3^2” | bc //做幂的运算,计算3的平方
9

bc做变量的运算:
[root@localhost ~]# a=10
[root@localhost ~]# b=3
[root@localhost ~]# echo “ a / a/ a/b” | bc
3
[root@localhost ~]# echo “scale=2; a / a/ a/b” | bc
3.33

bc还可以做逻辑运算,真为1,假为0
[root@client ~]# echo “2>2” | bc
0
[root@client ~]# echo “2==2” | bc
1
[root@client ~]# echo “2<2” | bc
0

练习:
写一个脚本求圆的面积

常用的运算表达式:
i=KaTeX parse error: Undefined control sequence: \* at position 10: (expr 12 \̲*̲ 5) i=((12 * 5))
i=[12 * 5]
let i=12*5

i++ 相当于 i= [ [ [i+1]
i-- 相当于 i= [ [ [i-1]
i+=2 相当于 i= [ [ [i+2]

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值