Linux Bash 脚本:在 Control-C 之后执行命令

发布于 2024-11-29 01:46:41 字数 406 浏览 4 评论 0原文

我的目标是打开一个新的终端窗口,在该窗口中通过 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 '"

这有效并实现了我的主要目标。

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

关于为什么会发生这种情况以及如何避免它有什么想法吗?

谢谢!

My goal is to open a new terminal window, SSH into a remote machine in that window, prompt the user to continue, and then execute a command. I currently have:

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

This works and achieves my primary goal.

The problem is that if the user attempts to exit the script via Control-C while waiting at the "Press ENTER..." prompt, the remainder of the command is executed (e.g., hello.txt appears on the remote machine).

Any thoughts on why this is happening and how to avoid it?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

靑春怀旧 2024-12-06 01:46:41

CtrlC 杀死 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 '"

CtrlC kills the read command, not everything there, so the next command gets executed. You can use && operator to signify that the next command should be executed only if the current one exits successfully.

gnome-terminal -t "MyWin" -x bash -c "ssh -X $USER@$REMOTE_IP 'echo \"Press ENTER to continue\" ; read JUNK && echo \"HELLO\" > hello.txt ; bash '"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文