【BASH】使用更少的if语句

 

问题:

前面的问题,判断一个命令是否成功执行,如果每个命令都有一个if语句去判断,你会发现你的脚本很难阅读。那么思考一下,如果每个命令都要检查上个命令的返回值,是不是有其他简单的方案呢?

 

解决方案:

使用bash提供的条件判断操作符'&&'

$ cd mytmp && rm *

 

讨论:

'&&'分隔的两个命令,首先执行第一个,当第一个成功执行之后才会执行第二个(exit status 0)。这跟下面的语句是相同的:

cd mytmp

if (( $? )); then rm * ; fi

如果您有c语言的经验,会发现bash提供的这个功能同c语言中的逻辑与运算是相同的。

 

如果您想完全的检查所有的错误而不是每次提供if来进行判断,可以通过-e选项设定bash,使其遇到任何命令失败的时候就退出执行脚本。

set -e

cd mytmp

rm *

 

注意,-e会导致bash在遇到任何命令失败的时候退出。在交互方式下使用bash,这种方法不推荐,会导致您的shell窗口关闭。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值