Linux Bash脚本:控制C后执行的命令

我的目标是打开一个新的terminal窗口,SSH进入该窗口的远程机器,提示用户继续,然后执行命令。 我目前有:

gnome-terminal -t "MyWin" -x bash -c "ssh -X $USER@$REMOTE_IP 'echo \"Press ENTER to continue\" ; read JUNK ; echo \"HELLO\" > hello.txt ; bash '" 

这工作,达到我的主要目标。

问题是,如果用户试图通过Control-C在等待“Press ENTER …”提示时退出脚本,则会执行命令的其余部分(例如,远程计算机上出现hello.txt)。

任何想法,为什么发生这种情况,以及如何避免它?

谢谢!

Ctrl C杀死read命令,而不是所有的命令,所以下一个命令被执行。 您可以使用&&运算符来表示只有当前的命令成功退出时才应该执行下一个命令。

 gnome-terminal -t "MyWin" -x bash -c "ssh -X $USER@$REMOTE_IP 'echo \"Press ENTER to continue\" ; read JUNK && echo \"HELLO\" > hello.txt ; bash '"