为什么回声$?即使预期返回 1,仍返回 0?

为什么回声$?即使预期返回 1,仍返回 0?

对于以下程序,我的 echo$ 得到 0?尽管我期望1。

int main()
{
    return 1;
}

答案1

您的程序将按照您的预期运行:

$ cat prog.c
int main()
{
    return 1;
}
$ cc prog.c
$ ./a.out
$ echo $?
1

请注意,如果您在运行程序和输出之间执行任何操作$?,则 的值$?将被您使用的命令的退出状态覆盖。例如,

$ ./a.out
$ echo "I ran the program"
I ran the program
$ echo $?
0

这里0是 的退出状态echo

答案2

如果我在我的系统上使用 gnu g++ 编译你的代码: echo $?给我 1. 你对 c、bash、python 等代码有同样的问题吗?另外:请注意 $?仅适用于最后一个命令的返回:$?对于回声$?是 0。

相关内容