Linux Bash Script: команда выполняется после Control-C - PullRequest
2 голосов
/ 10 августа 2011

Моя цель - открыть новое окно терминала, 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 Ответ

3 голосов
/ 10 августа 2011

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 '"
...