-- Start
每个 Linux 命令,脚本或函数都有一个退出状态,它用来指示该命令,脚本或函数是否执行成功。0 代表成功,其他值(1-255) 代表失败。
退出状态 描述
1-125 命令执行失败
2 命令使用错误,如参数传递不正确
126 命令不可执行
127 找不到命令
128-255 外部命令执行失败
256 由于一个信号,命令终止
对于函数来说,我们可以使用 return 语句来返回退出状态,如果一个函数没有 return 语句,默认返回函数中最后执行语句的的退出状态。对于脚本来说,我们可以使用 exit 语句来返回退出状态,如果一个脚本没有 exit 语句,默认返回脚本中最后执行语句的的退出状态。有一点需要特别注意,当脚本中的一条命令执行失败时,整个脚本并不会停止运行,所以对于可能出错的命令,我们最好检查它的退出状态,我们可以通过变量 $? 来得到它的退出状态。下面是一个简单的例子。
#!/bin/ksh
grep test test.txt > /dev/null;
exit_code=$?;
if [[ $exit_code -ne 0 ]]; then
print "command failed."
exit 1;
fi
事实上,我们可以把命令直接写在 if 语句中,如下:
#!/bin/ksh
if grep test test.txt > /dev/null; then
print "command success.";
else
print "command failed.";
exit 1;
fi
如果每条语句都这么检查退出状态,那么你的脚本会很长,其实,我们还可以这么写。
#!/bin/ksh
# 利用逻辑运算符的短路特性
grep test test.txt > /dev/null && print "command success."
grep test test.txt > /dev/null || print "command failed.";exit 1
-- 更多参见: ksh 精萃
-- 声 明:转载请注明出处
-- Last Updated on 2015-09-29
-- Written by ShangBo on 2015-09-29
-- End