Проверьте статус выхода команды. Если команда была прервана сигналом, код выхода будет 128 + номер сигнала. Из онлайн-документации GNU для bash :
Для целей оболочки команда, которая завершается с нулевым статусом выхода, выполнена успешно. Ненулевое состояние выхода означает сбой. Эта, казалось бы, нелогичная схема используется, поэтому существует один четко определенный способ указания успеха и множество способов указания различных режимов отказа. Когда команда завершается с фатальным сигналом с номером N, Bash использует значение 128 + N в качестве состояния выхода.
POSIX также указывает, что значение команды, оканчивающейся сигналом, больше 128, но, похоже, не указывает ее точное значение, как это делает GNU:
Состояние выхода команды, которая завершилась из-за того, что она получила сигнал, должно быть сообщено как больше 128.
Например, если вы прервете команду с control-C, код выхода будет 130, потому что SIGINT - это сигнал 2 в системах Unix. Так:
while [ 1 ]; do COMMAND; test $? -gt 128 && break; done