命令的退出状态

时间:2019-04-16 23:59:04  来源:igfitidea点击:

每个Linux命令在正常或异常终止时都会返回一个状态。

在shell脚本中可以使用exit status的值来显示错误消息或者继续执行某种操作。

例如,如果tar命令执行不成功,它将返回一个代码,shell脚本可以通过它来判断是否向sysadmin发送一封电子邮件。

退出状态

  1. 每个Linux命令(不管是shell脚本执行还是用户执行的)都有一个退出状态。
  2. 退出状态是一个整数。
  3. Linux手册说明了每个命令的退出状态。
  4. 退出状态0表示命令成功,没有任何错误。
  5. 非零(1-255个值)的退出状态表示命令执行失败。
  6. 可以使用特殊的shell变量 $?获取之前命令的退出状态。
[root@rhel6 ~]# echo $?
0
[root@rhel6 ~]# date  # 运行date命令
Wed Apr  8 08:57:48 CST 2010
[root@rhel6 ~]# echo $? # 查看退出状态
0
[root@rhel6 ~]# foobar123 # 不是有效的命令
-bash: foobar123: command not found
[root@rhel6 ~]# echo $? # 查看退出状态
127
[root@rhel6 ~]# 

可以看到,执行foobar123时,返回的状态码是127,对应错误信息是 command not found

如何将命令的退出状态存储在Shell变量中?

$?赋给shell变量:

ls -l /tmp
status=$?
echo "ls 命令的退出状态是: $status"