shell中的运算(小说总是善良的让错过的人再相遇)

目录

shell运算

1.1 基本运算法则

1.2 运算表达式

1.3 变量的自增/自减等操作

 1.4 let

1.5 小数运算 bc

1.6 expr 

1.7 seq

小贴士

总结


shell运算

1.1 基本运算法则

四则运算

  • 加法:num1 + num2
  • 减法:num1 - num2
  • 乘法:num1 * num2
  • 整除:num1 / num2

取余运算

  • 求模:num1 % num2

1.2 运算表达式

使用$[]或$(())表达式

[root@localhost ~]# echo $[1+8]
9
[root@localhost ~]# echo $[2*6]
12
[root@localhost ~]# echo $[12-8]
4
[root@localhost ~]# echo $[11/3]
3
[root@localhost ~]# echo $[11%3]
2
[root@localhost ~]# x=2
[root@localhost ~]# y=3
[root@localhost ~]# echo $[x+y]
5
[root@localhost ~]# echo $[x*y]
6
[root@localhost ~]# echo $((x*y))
6
[root@localhost ~]# 

1.3 变量的自增/自减等操作

简写表达式完整表达式
i++i=i+1
i--i=i-1
i+=2i=i+2
i-=2i=i-2
i*=2i=i*2
i/=2i=i/2
i%=2i=i%2

[root@localhost ~]# x=2
[root@localhost ~]# echo $[x+=4]
6
[root@localhost ~]# echo $x
6
[root@localhost ~]# echo $[x*=3]
18
[root@localhost ~]# echo $x
18
[root@localhost ~]# 

 1.4 let

不返回结果,需要借助echo

[root@localhost ~]# let i=2*3   #不显示结果,需要借助echo命令
[root@localhost ~]# echo $i
6
[root@localhost ~]# let i=2+3
[root@localhost ~]# echo $i
5
[root@localhost ~]# let i+=3   #也支持简写
[root@localhost ~]# echo $i
8
[root@localhost ~]# let i/=2;echo $i  #使用;可以在一行操作
4
[root@localhost ~]# 

1.5 小数运算 bc

bash内建机制仅支持整数运算,不支持小数运算

我们可以通过计算器软件bc实现小数运算

  • 如果没有该软件需要yum安装
  • bc支持交互式和非交互式两种方式,scale=n可以约束小数位
  • 支持比较操作符:>、>=、<、<=、==、!=

#非交互式运算,使用管道传给bc
[root@localhost ~]# echo "1.2+2.3;2.3*2.5"|bc
3.5
5.7
[root@localhost ~]# echo "scale=2;1.2+2.3;2.3*2.5"|bc  #当需要指定小数位数时,scale写在前面
3.5
5.75
[root@localhost ~]# echo "scale=2;9/3"|bc
3.00

1.6 expr 

expr命令的英文全称是“expression”,即是表达式的意思,作用是一个命令行的计数器,常用于在UNIX/LINUX系统中求表达式变量的值,一般用于整数值,也可用于字符串

expr不可计算小数,并且变量和运算符之间需要空格分隔

常用参数:

空格隔开每个项
\(反斜杠)放在 shell 特定的字符前面
“”(引号)对包含空格和其他特殊字符的字符串要用引号括起来
#计算字符串的长度
[root@localhost ~]# expr length "this is a test"
14

#抓取字符串
[root@localhost ~]# expr substr "this is a test" 3 5 
is is

#抓取第一个字符数字串出现的位置
[root@localhost ~]# expr index "sarasara" a 
2

#整数运算:
[root@localhost ~]# expr 14 % 9
5
[root@localhost ~]# expr 30 / 3 / 2
5

#使用expr进行四则运算:
#注意:使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义
[root@localhost ~]# expr \( 10 + 10 \) \* 2 + 100 
140

1.7 seq

seq命令用于以指定增量从首数开始打印数字到尾数,即产生从某个数到另外一个数之间的所有整数,并且可以对整数的格式、宽度、分割符号进行控制

常用参数:

-f格式
-s字符串
-w在列前添加0 使得宽度相同
#产生5以内的整数:
[root@localhost ~]# seq 5
1
2
3
4
5

#产生98~101之间的整数,并且要求数字之间的分隔符为”:::”:
[root@localhost ~]# seq -s ":::" -f "%03g" 98 101
098:::099:::100:::101

小贴士

生成一个20以内的随机数

[root@localhost ~]# expr $[RANDOM % 20 + 1]
10
[root@localhost ~]# echo $[RANDOM % 20 + 1]
4

 

总结

默认bash仅支持整数运算

可以借助bc计算器进行小数运算

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Steve lu

感谢大佬的支持

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

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

打赏作者

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

抵扣说明:

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

余额充值