Bash one liner来编译,执行和回显返回值?

时间:2013-04-08 02:28:26

标签: c linux bash unix return-value

我不是一个狂欢的人,所以请原谅这个问题的简单性。

我想在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 $?不起作用!

2 个答案:

答案 0 :(得分:3)

如果上一个命令成功,&&运算符仅执行下一个命令。请改用;

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

如果echo $?失败,则括号使gcc不会发生。

答案 1 :(得分:1)

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

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