Bash在Linux/Unix上获取命令的退出代码
时间:2020-01-09 10:37:22 来源:igfitidea点击:
如何获得命令的退出代码?
如何获得Linux或Unix shell命令的退出代码或状态并将其存储到shell变量中?
简介每个Linux或Unix shell命令正常或异常终止时都会返回一个状态。
例如,如果backup.sh脚本不成功,它返回一个代码,该代码告诉Shell脚本向sysadmin发送电子邮件。
bash shell中的退出代码是什么?
Shell脚本或用户执行的每个Linux或Unix命令都具有退出状态。
退出状态是整数。
退出状态为0表示命令成功执行,没有任何错误。
非零(1-255值)的退出状态表示命令失败。
如何找出命令的退出代码
您需要使用一个名为$的特殊shell变量来获取先前执行的命令的退出状态。
要打印$?
变量,请使用echo命令或printf命令:
date echo $? date-foo-bar printf '%d\n' $?
如何获取命令的退出代码,例如date和date-foo-bar
从以上输出中可以清楚地看出,退出代码为0表示date命令已成功执行。
此外,由于不存在的命令不成功,因此退出代码为127(非零)。
Bash获取命令的退出代码如何在Shell脚本中使用退出代码
那么,如何将命令的退出状态存储在shell变量中?
只需分配$?
到一个shell变量。
语法为:
command status=$? ## run date command ## cmd="date" $cmd ## get status ## status=$? ## take some decision ## [ $status -eq 0 ] && echo "$cmd command was successful" || echo "$cmd failed"
如何为自己的Shell脚本设置退出代码?
exit命令导致正常的Shell脚本终止。
它以状态N退出shell。
语法为:
exit N exit 1 exit 999
例如:
#!/bin/bash /path/to/some/command [ $? -eq 0 ] || exit 1
一个示例shell脚本,用于获取命令的退出代码
#!/bin/bash # # Sample shell script to demo exit code usage # # set -e ## find ip in the file ## grep -q 192.168.2.254 /etc/resolv.conf ## Did we found IP address? Use exit status of the grep command ## if [ $? -eq 0 ] then echo "Success: I found IP address in file." exit 0 else echo "Failure: I did not found IP address in file. Script failed" >&2 exit 1 fi