1

我不是 bash 高手,所以请原谅这个问题的简单性。

我想在 Linux shell 的一行中编译、执行和回显我的程序的返回值。就像是...

~$ gcc -Wall -std=c99 program.c && ./a.out && echo $?

这些都是单独工作的,这当然也有效:

~$ gcc -Wall -std=c99 program.c && ./a.out
...
~$ echo $?
5
~$

似乎问题在于知道何时/是否./a.out成功,因为~$ ./a.out && echo $?也不起作用!

4

2 回答 2

3

如果上一个命令成功,&&操作员只执行下一个命令。改为使用;

gcc -Wall -std=c99 program.c && (./a.out ; echo $?)

括号使它在失败时echo $?不会发生gcc

于 2013-04-08T02:31:01.940 回答
1
$ gcc -Wall -std=c99 program.c && ./a.out ; echo $?

应该这样做。分号只是分隔命令,所以回显总是会发生

于 2013-04-08T02:31:12.887 回答