为什么命令退出时出现一些错误代码,却不显示提示信息?
答案 0 :(得分:0)
大多数程序 do 以非零代码退出时都会显示错误消息。错误消息通常被写入标准错误,因此不会在管道中捕获该错误消息,也不会将其写入输出文件,该文件只能接收程序的正常输出(如果您希望将错误混入其中,则可以使用2>&1
重定向。
但是某些程序出于非错误的原因退出,并返回非零代码。一个示例是grep
。它使用退出状态1
表示没有匹配的行。这可以让你写
if grep -s 'pattern' file
then ...
else ...
fi
这不是错误,因此不会打印任何消息。如果遇到错误,它将输出一条消息,并返回高于1的退出状态。如果脚本需要区分这些不同的非零返回值,则可以更精确地测试$?
。
另一个示例是false
命令。它的唯一目的是返回非零代码,这实际上不是错误。