为什么错误消息和退出代码不是1?

时间:2019-07-18 01:19:41

标签: linux bash shell exit

为什么命令退出时出现一些错误代码,却不显示提示信息?

1 个答案:

答案 0 :(得分:0)

大多数程序 do 以非零代码退出时都会显示错误消息。错误消息通常被写入标准错误,因此不会在管道中捕获该错误消息,也不会将其写入输出文件,该文件只能接收程序的正常输出(如果您希望将错误混入其中,则可以使用2>&1重定向。

但是某些程序出于非错误的原因退出,并返回非零代码。一个示例是grep。它使用退出状态1表示没有匹配的行。这可以让你写

if grep -s 'pattern' file
then ...
else ...
fi

这不是错误,因此不会打印任何消息。如果遇到错误,它将输出一条消息,并返回高于1的退出状态。如果脚本需要区分这些不同的非零返回值,则可以更精确地测试$?

另一个示例是false命令。它的唯一目的是返回非零代码,这实际上不是错误。