在高级语言的时候,我们可以使用捕获异常的语句, 进行catch, 并和谐的处理, 但是shell是没有类似keyword的, 如何解决?
答案是#?
:用于捕获上一条命令的状态,0的状态为正常,1为异常
自己在整理shell的时候遇到一些坑, 把它的规范列一下
#?和echo输出命令要注意
这是一条echo输出命令,命令处于``之中,输出后执行. 但是命令是错误,执行的话会抛错误,也就是echo $?
应该给到是1
但是看看执行结果:
看到输出的结果是0, 原因在于echo
上, echo
包了这一层命令, 只要echo
直接将这命令打印在终端, 就是完整的完成工作,根本没有异常可言.
修复
当然是去除echo
直接输出, 但是还是要注意的是, $?
仅仅提示是上一条,这里必须十分谨慎.列下能捕获到异常:
可以看到输出是1了, 确认命令使用没问题后,就可以进行逻辑处理.
避免
这是完整的逻辑代码:
更好的避免, 将允许的条件, 并到逻辑与:
[shell大法好]