【发布时间】:2014-09-14 13:18:51
【问题描述】:
在 bash 脚本中,我使用一个给出错误的命令启动一个新终端。但是我似乎无法获取该错误代码:
#! /bin/bash
gnome-terminal -x bash -c "cat dksdamfasdlm"
echo $?
输出:
0
所以我得到了gnome-terminal 命令的错误代码,而不是cat 一个。我得到的一个建议是用代码制作一个文件并从父 bash 中读取它。问题是我似乎仍然无法以这种方式阅读错误代码:
#! /bin/bash
gnome-terminal -x bash -c "cat dksdamfasdlm; echo $?; sleep 2"
输出(在新终端上):
cat: dksdamfasdlm: No such file or directory
0
这是为什么呢?关于如何解决这个问题的一些建议?我只是想以某种方式从父 bash 中获取新终端中的错误。
【问题讨论】:
-
您为什么要这样做?除非您正在测试 GNOME 终端本身,否则您应该直接运行脚本而不是通过终端。
-
我正在尝试制作一个为应用程序(Docker)打开不同终端的 BASH 脚本。但是,我希望能够捕获任何错误..
-
您能否提供更多背景信息?我还是不明白你为什么要使用终端而不仅仅是运行脚本。
-
这是一个复杂的场景。我想从终端运行这个脚本。该脚本应该打开一个新终端,该终端将连接到正在运行的虚拟机。父终端也应该连接到虚拟机。但是,如果启动的终端无法成功连接到 VM,则脚本应立即退出,而不是尝试连接到 VM。
-
您可以将第一个连接作为后台,然后您可以在同一个脚本中进行两个连接,而无需生成单独的终端。
标签: bash process parent-child error-code gnome-terminal