在可执行文件之后运行&&

大卫542:

我试图单线运行以下命令以查看ac程序的输出:

$ gcc -o hi.o hi.c && ./hi.o && echo $?

但是,这不会“返回”或打印任何内容。而且echo $?只有我在新行中执行此操作才可以。例如:

$ gcc -o hi.o hi.c && ./hi.o
$ echo $?
21 # correct program output

为什么会发生这种现象?会发生什么后./hi.o说(好像)禁止输出后呢?

CherryDT:

以前的命令之一可能失败了(退出代码非零)。&&就像大多数程序语言一样工作,它会短路。因此,如果我编写true && false && truetrue命令,则最后一条命令将永远不会运行,因为该false命令返回了不成功的退出代码。

(也有||相反的情况:只有在左侧发生故障时,它才会在右侧运行。)

根据您的问题,./hi.o返回的退出代码21非零,因此被视为失败echo $?且未执行。

无条件地链接命令,请;改用:

gcc -o hi.o hi.c; ./hi.o; echo $?

您还可以使它像以前一样hi.o仅在gcc成功后才能运行,但是无论如何都可以运行echo

gcc -o hi.o hi.c && ./hi.o; echo $?

(此方法没有括号,因为;它的优先级低于&&。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章