Linux Bash Script: команда выполняется после 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 '"

Это работает и достигает моей главной цели.

Проблема заключается в том, что если пользователь пытается выйти из сценария через Control-C во время ожидания по запросу "Нажмите клавишу ВВОД...", выполняется остальная часть команды (например, hello.txt появляется на удаленном компьютере).

Есть мысли о том, почему это происходит и как этого избежать?

Спасибо!

1 ответ

Решение

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 '"
Другие вопросы по тегам