从 gnome-terminal 中获取 bash 退出命令

Posted

技术标签:

【中文标题】从 gnome-terminal 中获取 bash 退出命令【英文标题】:get the bash exit command out of gnome-terminal 【发布时间】:2013-01-10 01:17:39 【问题描述】:

从 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

有人知道吗?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

您实际上是在将退出代码写入文件?正如你所说,如果你真的处于紧要关头......【参考方案2】:

您可能不得不依靠 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 

【讨论】:

以上是关于从 gnome-terminal 中获取 bash 退出命令的主要内容,如果未能解决你的问题,请参考以下文章

脚本执行后避免 gnome-terminal 关闭?

在 gnome-terminal 内的 Emacs 实例中使用 X11 剪贴板

如何从脚本本身中获取 Bash 脚本的源目录?

如何从脚本本身中获取 Bash 脚本的源目录?

如何从上一个 bash 命令中获取倒数第二个参数? (在交互式 bash shell 中)

Bash - 从整数列表中获取最大值