liunx系统中shell的数值运算

1.

运算符含义
+ - * / %加 减 乘 除 求余
**幂运算
++ –自增 自减
&&与(and) 或(or) 非(取反)
< <= > >= == !=小于 小于等于 大于 大于等于 等于 不等于
<< >>左移位 右移位
~ & ^按位取反 按位异或 按位与 按位或
= += -= *= /= %=如a+=1与a=a+1相同
算术运算命令

运算命令

含义

运算符含义
(())整数运算,效率很高
let整数运算,类似于(())
expr整数运算,另外还有很多额外功能
bcLinux中的计算器,适合整数及小数运算
$[]整数运算
awk既可用于整数运算,也可用于小数运算
declare定义变量值和属性,-i 参数可以用于定义整型变量并进行运算

数值运算用法

(())用法

双小括号常用于数值运算和数值比较,因其效率很高,用法灵活,因此是常用的运算之一。

示例含义备注
((i=i+1))运算后并进行赋值,即先进行i+1计算并将该值赋值给i只能使用echo ((i=i+1))进行输出
((2>1&&8>3))进行比较后再进行逻辑运算常用于条件判断
echo $((4+2))直接进行计算并输出结果

(())用法示例

[root@king ~]# echo $((90-12));echo $((80+12))     ##简单运算
78
92
[root@king ~]# ((a=100))
[root@king ~]# ((a*=2))   				##  a=100*2
[root@king ~]# echo $a
200
[root@king ~]# ((a=100+2**10-200%100))   ## 复杂运算
[root@king ~]# echo $a
1124
[root@king ~]#  a=$((50**2*2+2500))      		## 运算并赋值
[root@king ~]# echo $a
7500
[root@king ~]# a=100        ## 自增运算
[root@king ~]# echo $((a++));echo $((++a)) 
100
102
[root@king ~]#  echo $((a**2))   ## 求冥运算
10404
[root@king ~]# echo $((2==2))    ## 比较运算
1    ## 1代表为真
[root@king ~]# echo $((2>2)) 
0   ##  0代表为假

++/–:如果++/–在变量前面,则代表先进行运算再输出结果,如果++/–在变量后面,则先输出结果再进行运算

(()):在执行命令时不需要添加,直接使用((4+3))即可,如果输出进行变量赋值,则需要添加,直接使用((4+3))即可,如果输出进行变量赋值,则需要添加,如使用a=$((4+3))

(())中所有字符中有无空格均不受影响

let 运算

let 的语法格式:

  • let var=value
[root@king ~]# a=100
[root@king ~]# b=200
[root@king ~]#  c=$a+$b
[root@king ~]# echo $c
100+200      ## 字符串相连
[root@king ~]# let c=$a+$b
[root@king ~]# echo $c
300     # # 使用let进行,数值计算


let let c=a+a+b等同于((c=a+a+b))

expr用法

expr的语法格式如下所示:

expr 表达式

[root@king ~]# expr 9 - 5     ## 注意空格
4
[root@king ~]# expr 2 \* 5
10
[root@king ~]# expr 2 * 5   ## 乘法 使用比较特殊
expr: 语法错误
[root@king ~]# a=100
[root@king ~]# b=200
[root@king ~]# expr c=$a+$b
c=100+200
[root@king ~]# echo $c
300
[root@king ~]# c=`expr $a \* $b`
[root@king ~]# echo $c
20000

使用expr的注意事项如下所示:
运算符与计算项之间左右间必须要有一个空格,否则会出现报错
使用*需要进行转义符

bc 运算 这个在liunx 中可以进行浮点运算

bc 计算器是可以在命令行进行运算的
[root@king ~]# 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'. 
1+3
4
2.4 + 2.5
4.9

展示bc 计算器的
[root@king ~]# a=2
[root@king ~]# b=3
[root@king ~]# c=`echo $a+$b | bc`
[root@king ~]# echo $c
5

bc 的高级用法 是结合awk 使用
[root@king ~]# echo "12.36  23.56" | awk '{print $1+$2}'
35.92
[root@king ~]# echo "12.36  23.56" | awk '{print $1*$2+$2}'
314.762
[root@king ~]# echo "12.36  23.56" | awk '{print $1*($2+$2)}'
582.403

declare用法

declare的语法格式如下所示:

declare -i var=value

declare 使用案例
[root@king ~]# declare -i a=120 b=130
[root@king ~]# a=a+b     #因为已经申明为整数,可以直接进行运算
[root@king ~]# echo $a   
250

[root@king ~]# a=120
[root@king ~]# b=1300
[root@king ~]# a=$[a+b]
[root@king ~]# echo $a
1420


read 用法事例

[root@king ~]# read -t 20 -p "Input 3 number:" a b c
Input 3 number: 1 2 3
[root@king ~]# echo $a $b $c
1 2 3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维螺丝钉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值