在bash shell脚本中,如何获取上一个命令的退出状态码
时间:2019-11-20 08:53:00 来源:igfitidea点击:
问题
在Linux中,如何获得命令的退出状态代码?
如何获得Linux或Unix shell命令的退出代码或状态并将其存储到shell变量中?
解决方案
每个Linux或Unix shell命令正常或异常终止时都会返回一个状态。
成功返回0,其他异常情况返回非0值。
bash shell中的退出状态码是什么?
Shell脚本或用户执行的每个Linux或Unix命令都具有退出状态。
退出状态是整数。退出状态为0表示命令成功执行,没有任何错误。
非零(1-255值)的退出状态表示命令失败。
如何获取命令的退出状态码?
可以使用一个特殊shell变量$?
来获取先前执行的命令的退出状态。
要打印$?
变量的值,可以使用echo命令或printf命令:
[ritter@theitroad ~]$ echo $? 0 [ritter@theitroad ~]$ date-foo-bar bash: date-foo-bar: command not found... [ritter@theitroad ~]$ printf '%d\n' $? 127
从以上输出中可以清楚地看出,退出代码为0表示date命令已成功执行。
此外,由于命令不存在,所以没有成功执行,因此退出代码为127(非零)。
如何在Shell脚本中使用退出状态码
在脚本中,可以将$?
的值保存到一个shell变量中。以便之后使用。
语法为:
command status=$?
例如:
cmd="date" $cmd ## 获取状态 status=$? ## 根据状态进行进一步操作 [ $status -eq 0 ] && echo "$cmd command was successful" || echo "$cmd failed"
如何为自己的Shell脚本设置退出状态代码?
exit命令用于终止正常运行的Shell脚本。
在退出时,可以指定退出状态。
语法为:
exit N exit 1 exit 999
例如:
#!/bin/bash /path/to/some/command [ $? -eq 0 ] || exit 1
总结
本教程介绍了如何在基于Linux或Unix的系统上使用退出代码,以及如何获取命令的退出状态/代码。