从gnome-terminal获取bash exit命令

时间:2013-01-10 01:17:39

标签: bash exit-code gnome-terminal

从bash开始,我想在新终端中启动一个新进程,等待它完成,然后恢复退出代码。

例如,我想做这样的事情,但实际上恢复了有用的退出代码;

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
谁知道怎么做?

2 个答案:

答案 0 :(得分:1)

你有没有想过这个?我意识到这不是你正在寻找的答案,但它可能会起作用:

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

答案 1 :(得分:0)

您可能必须依赖fifo才能在两个shell之间进行通信,因为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