![将两个命令的输出打印到同一终端](https://linux22.com/image/891395/%E5%B0%86%E4%B8%A4%E4%B8%AA%E5%91%BD%E4%BB%A4%E7%9A%84%E8%BE%93%E5%87%BA%E6%89%93%E5%8D%B0%E5%88%B0%E5%90%8C%E4%B8%80%E7%BB%88%E7%AB%AF.png)
我使用的是 Ubuntu 16.04.2,我的桌面上有一个图标,链接到我$HOME/bin
目录中的脚本。此脚本使用$HOME/bin
目录中的两个脚本。它打开一个终端并打印脚本一的输出。然后它打开第二个终端并打印脚本二的输出。
我希望它将所有数据打印到一个终端。最终结果应该是,当我单击桌面图标时,所有数据都将打印到一个终端。
非常感谢您的建议
#!/bin/bash
gnome-terminal -e "bash -c $HOME/bin/bin_old/bk_up;bash" && gnome-terminal -e "bash -c $HOME/bin/bin_old/win_bkp;bash"
答案1
不需要打开第二个 gnome 终端,只需在第一个终端中执行两个命令即可。
#!/bin/bash
gnome-terminal -e "bash -c $HOME/bin/bin_old/bk_up;$HOME/bin/bin_old/win_bkp;bash"
编辑
根据评论中的讨论,理查德想要的是这样的:
#!/bin/bash
$HOME/bin/bin_old/bk_up
if [ $? -eq 0 ]; then
$HOME/bin/bin_old/win_bkp
fi
基本上,它运行第一个脚本,如果运行成功(没有返回错误),它就运行第二个脚本。
答案2
在 Ricardo Rodrigues 的大力帮助下。这是最适合我想要实现的解决方案。如果第一段代码成功,那么第二段代码将执行。如果不成功,则会打开一个终端窗口,告诉我在哪里可以找到错误的详细信息。如果第二段代码成功,那么我就会确信我的系统已在本地备份,并且还备份到远程系统,然后在本地关闭。但是,如果出现错误,它将打开一个终端窗口并告诉我在哪里可以找到错误的详细信息。正如您所见,我已经放弃尝试让所有内容都显示在单个弹出终端窗口中。这似乎对我来说很简单。现在,当我单击我的桌面图标时,系统将备份到本地和远程系统,然后关闭,或者我将在弹出终端中收到一条错误消息。
#!/bin/bash
if bk_up 2> $HOME/local_errors # backup to local directory
then
if win_bkp 2> $HOME/remote_errors # backup to remote system
then
shutdown now
exit
else
echo "echo Remote errors. Check remote_errors file" > $HOME/warn2
chmod ugo+x $HOME/warn2 # needs to be executable for gnome-termial to work.
gnome-terminal -e "bash -c $HOME/warn2;bash"
exit
fi
else
echo "echo Local errors. Check local_errors file" > $HOME/warn1
chmod ugo+x $HOME/warn1 # need to be executable for gnome-terminal to work.
gnome-terminal -e "bash -c $HOME/warn1;bash"
exit
exit
fi