shell脚本——算术运算和逻辑运算

一、实现算术运算

1.let var=算术表达式

2.((var=算术表达式))

3.var=$[算术表达式]

4.var=$((算术表达式))

.................................

乘法符号有些场景中需要转义

内建的随机数生成器变量:

$RANDOM    取值范围:0-32767

示例:生成 0-49之间的随机数

echo  $[$RANDOM%50]]

增强型赋值:

i+=10   相当于  i=i+10

i-=j     相当于    i=i-j

i++,++i    相当于i=i+1

i--,--i       相当于i=i-1

二、逻辑运算

1,真

0,假

注意:以上的1和0均是二进制

与:&:和0相与结果为0,和1相与结果保留原值,一假则假,全真则真

0与0=0

0与1=0

1与0=0

1与1=1

或:|:和1相或结果为1,和0相或结果保留原值,一真则真,全假则假

0或1=1

0或0=0

1或0=1

1或1=1

非:!

!1=0                     !true

!0=1                      !false

异或:^:异或的两个值,相同为假,不同为真。两个数字x,y异或得到结果z,z再和任意两者之一x异或,将得出另一个值y

0^0=0

0^1=1

1^0=1

1^1=0

短路运算

短路 与&&

CMD1  短路与   CMD2

若第一个CMD1结果为真   (1);则第二个CMD2必须参与运算,才能得到最终的结果

若第一个CMD1结果为假    (0);则总的结果为0,因此不需要执行CMD2

短路  或||

CMD1   短路或  CMD2

第一个CMD1结果为真     (1);则总的结果必定为1,因此不需要执行CMD2

第一个CMD1结果为假       (0);第二个CMD2必须参与运算,才能得到最终的结果

三、条件测试

条件测试:判断某需求是否满足,需要由测试机制来实现,专用的测试表达式需要由测试命令辅助完成测试过程,实现评估布尔声明,以便在条件环境下进行执行

若真,则状态码变量$?返回0

若假,则状态码变量$?返回1

3.1条件测试命令:

[ ]

[[  ]] 相当于增强版的[ ],支持[ ]的用法且支持扩展正则表达式和通配符

注意:[ CMD ]命令的前后必须留有一个空格

3.2数值测试

-eq    等于

-ne  不等于

-gt   大于

-lt   小于

-ge  大于等于

-le   小于等于

3.3算术表达式:

==  相等

!=  不相等

<=

>=

<

>

3.4文件测试:

-e file   :文件存在性测试

-s   file:是否存在且非空

-N  file:文件从上一次被读取之后是否被修改过

-O  file :当前有效用户是否为文件属主

-G  file:当前有效用户是否为文件属组

3.5组合测试条件

3.5.1:第一种方法

[ CMD1 -a  CMD2 ] 并且 ,CMD1和CMD2都是真,结果才为真

[ CMD1 -o  CMD2]  或者,CMD1或CMD2只要有一个为真,结果就为真

[ ! CMD ]  取反

注意:-a 和 -o  需要使用测试命令进行,[[ ]]不支持

3.5.2:第二种方法

CMD1&&CMD2    并且,短路与,代表条件性的AND

(如果CMD1成功,将执行CMD2,否则将不执行CMD2)

CMD1||CMD2      或者,短路或,代表性条件or

(如果CMD1成功将不执行CMD2,否则执行CMD2)

!CMD            非,取反

四、关于()和{ }

(CMD1;CMD2.....)和{  CMD1;CMD2........}都可以将多个命令组合起来,批量执行

注意:(  list   )会开启子shell进程,并且list中变量赋值及内部命令执行后,将不在影响后                               续的环境

             { list;}不会开启shell子进程,在当前shell中运行,会影响当前shell的环境

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值