系统

退出码(exit code)

退出码(exit code)是一个程序结束时交还回来的那一个数字——它用来说「这次顺利完成」或者「出了点问题」。按照一条几乎人人都遵守的约定,0 表示成功,其他任何值(1、2、127……)都表示某种失败。这是程序临走前的最后一句话。

你很少见到它,因为它不会被打印出来——而是悄悄留给下一个程序去读。在 shell 里,你可以在某条命令刚跑完后用 $? 偷看一眼;或者干脆把命令串起来:「build && deploy」只有在 build 以 0 退出时才会运行 deploy,因为 && 的意思就是「而且只有在它成功时」。

正是这个不起眼的数字,让自动化得以运转。当 CI 说你的构建「失败了」,真正发生的其实是某一步以非零退出码结束,而流水线注意到了。计算机读不懂你的测试输出,但它永远读得懂一个 0。

$ grep "TODO" notes.txt
$ echo $?
1            # 1 = grep found nothing; 0 would mean it did

$? 保存着上一条命令的退出码——这里是「没找到匹配」。

「0 = 成功」一开始会觉得反常——把它想成「零个问题」,而不是「零个完成」就顺了。

又称
exit statusreturn codestatus codeerrorlevel$?