从 gnome 终端获取 bash 退出命令

问题描述 投票:0回答:3

来自 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

有人知道怎么做吗?

bash exit-code gnome-terminal
3个回答
1
投票

你想过这个吗?我意识到这不是您要找的答案,但它可以在紧要关头工作:

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

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 

0
投票

我想我参加聚会有点晚了,但是对于正在搜索这个的人:
使用

--wait
选项,它会等到新打开的终端完成并且您可以获得退出代码。

gnome-terminal --wait -- bash -c 'echo foo; sleep 1; exit 42'; echo $?
© www.soinside.com 2019 - 2024. All rights reserved.