Перевірте стан виходу команди. Якщо команда була припинена сигналом, код виходу буде 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