假设我有这个简单的 C 程序,它将 4 返回给 shell。
int main()
{
return 4;
}
当我运行它,然后执行时echo $?
,我会得到4
,这是预期的
$ gcc foo.c && ./a.out
$ echo $?
4 <<<< expected
但当我执行以下操作时,我什么也没得到
$ gcc foo.c && ./a.out && echo $?
$ <<<< Nothing - WHY????
答案1
&&
仅在第一个参数成功时才运行第二个参数,即,如果它以退出代码 0 结束。退出代码 4 表示 shell“失败”,因此echo
不会执行。尝试
gcc foo.c && ./a.out || echo $?
如果您只想在退出代码不为零时查看退出代码。如果您想始终查看退出代码,请使用
gcc foo.c && ./a.out ; echo $?
gcc
请注意,如果退出代码不为零,它可以报告退出代码。