2013-01-10 97 views
3

,我想在新終端啓動一個新進程,等待它結束,然後恢復退出代碼。從bash中獲取bash exit命令退出gnome-terminal

例如,我想要做這樣的事情,但實際上恢復有用的退出代碼;

gnome-terminal -e "bash -c \" sleep 2s ; if [ '1' == '1' ] ; then exit 2 ; else exit 3 ; fi \"" 
echo gnome terminal returns $? 

#gnome terminal returns 0 

有人知道嗎?

回答

1

你有沒有想過這個?我知道這是不太你要找的答案,但它可以在緊要關頭:

$ gnome-terminal -e 'bash -c "bash -c \"exit 5\"; echo $? > \$\?"' 
$ cat '$?' 
5 
+0

這對我有效。 –

+0

您實際上正在將退出代碼寫入文件?正如你所說,如果你真的陷入困境...... – csl

0

你可能不得不依賴於一個FIFO爲gnome-terminal似乎沒有兩個殼之間的通信宣傳退出狀態。這增加了在讀取fifo時阻塞調用shell的好處,直到結果代碼被寫入。

sh$ TMPDIR=$(mktemp -d) 
sh$ F=$TMPDIR/fifo 
sh$ mkfifo $F 
sh$ gnome-terminal -e 'bash -c "bash -c \"exit 5\"; echo $? > '"$F"'"' 
sh$ cat $F 
5 
sh$ rm -rf $TMPDIR