Linux Bash 脚本:在 Control-C 之后执行命令
我的目标是打开一个新的终端窗口,在该窗口中通过 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
CtrlC 杀死
read
命令,而不是其中的所有内容,因此执行下一个命令。您可以使用&&
运算符来表示仅当当前命令成功退出时才应执行下一条命令。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.