2013-04-08 26 views
1

我不是一個bash高手,所以請原諒這個問題的簡單性。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 $?做不工作,或者!

回答

3

如果上一次成功,&&運算符僅執行下一個命令。改爲使用;

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

括號做起來很echo $?如果gcc失敗不會發生。

+0

爲什麼選擇圓括號而不是大括號? [documentation](http://www.gnu.org/software/bash/manual/bash.html#Command-Grouping)表示這會創建一個子shell,但爲什麼在這個實例中僅僅在當前shell中執行? – 2013-04-08 02:36:29

+1

@highphi:大括號需要更多的打字。 – 2013-04-08 02:42:19

+0

有趣......!我知道有關檢測程序執行「成功」的問題。 – d0rmLife 2013-04-08 02:50:52

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

應該這樣做。分號只是分隔命令,所以回聲將始終發生