shell脚本中如何捕获异常

在高级语言的时候,我们可以使用捕获异常的语句, 进行catch, 并和谐的处理, 但是shell是没有类似keyword的, 如何解决?
答案是 #? : 用于捕获上一条命令的状态,0的状态为正常,1为异常
自己在整理shell的时候遇到一些坑, 把它的规范列一下

#?和echo输出命令要注意


这是一条echo输出命令,命令处于``之中,输出后执行. 但是命令是错误,执行的话会抛错误,也就是echo $?应该给到是1
但是看看执行结果:

看到输出的结果是0, 原因在于echo上, echo包了这一层命令, 只要echo直接将这命令打印在终端, 就是完整的完成工作,根本没有异常可言.

修复

当然是去除echo直接输出, 但是还是要注意的是, $?仅仅提示是上一条,这里必须十分谨慎.列下能捕获到异常:


可以看到输出是1了, 确认命令使用没问题后,就可以进行逻辑处理.

避免

这是完整的逻辑代码:

更好的避免, 将允许的条件, 并到逻辑与:

[shell大法好]

© 2020 In 'flight of thought' All Rights Reserved. 本站访客数人次 本站总访问量
Theme by hiero