shell 判断是不是数字_从零开始学Linux运维|23.Shell编程(数字的运算和判断)

435aaad9f4ac4cdfbcf2fc74d3184f99

1.数字的运算

在shell下是不支持直接输入数字进行数字的运算的

71d33a262fe449818d8241bdefd459cb

可以通过$(())包裹算式来计算

ab71cc42d5a449a98b3bb49990669b26

支持的运算有

+ - * / :对应加减乘除

2808e551516b481db1d10251dc6c27da

** : 乘方

ec199a14195e4fbfb90d906052d23ae1

% : 取余

564b99c409554072aecdd37ee0adabc7

& | ! ^ : 对应与(AND)或(OR)非(NOT)异或(XOR)

暂时用不到,这几个运算,就先不介绍了

要注意的是$(())只支持整数运算

a34732be70474ee89e6d7ade6e8003d1

运算结果有小数的,会舍弃小数点后的数字

运算里面包含小数会报错

2.数字大小判断

>,=,==,!=:对应大于,小于,小于等于,大于等于,相等,不等

如果判断值为正确,那么会返回1,判断为错误会返回0

8f16067d84a6451fa5e6f0ccbc330a65

3.if语句

8d0c3afd233c4424963028b4d9a14f44

执行结果

3b560fb124ad47948d09506f7292964b

如果只是简单的判断,也可以省略else语句

c282e64b729146c8915d7b066ad3b64a

执行结果

e88f64bd7ee940c8b97c0709d75d8e83

如果要进行多次判断,

1a9bd11fe6cd4399b745b40aa4478fe1

同样这里面的else也可以省略

我们写一个比较简单的小例子,判断秒的数字是否大于分的数字

3e42d55f8c5940caa2abb713ac619803

使用date命令,我使用了分号;隔开了两个命令,执行完第一条命令后,紧接着执行了第二条命令

4e319b70feae4e1884a20a4d028b70b7

第二条命令通过格式化时间类型,打印出了当前的小时,分钟,秒

我们只取分钟和秒的值

c8ce3312e1744722b300d2081ba577e2

下面开始写脚本

c8c9842e399d4c4bb2fd3983f86882c8

执行结果

2bd09747d7b3424d87d49f5390083f76

在执行过程中发现了错误

d54aff76b65d42beb7a5237776d064d0

这就是脚本的bug,也就是没有考虑到的情况出现了

$(())里面会把0开头的数字当做是8进制数,所以08和09都会出现这个错误,我们需要把数字前面的0去掉

这里使用awk给此打印此值加上0,来去掉数字前面的0

43d6af7b33e04ccdbf304311356a7a34

修改后的脚本

560dc7e6ef0e4ce082204f26a24389b0

执行的结果也没有报错了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值