Verifique o status de saída do comando. Se o comando foi terminado por um sinal, o código de saída será 128 + o número do sinal. Da documentação on-line do GNU para o bash :
For the shell’s purposes, a command which exits with a zero exit status has succeeded. A non-zero exit status indicates failure. This seemingly counter-intuitive scheme is used so there is one well-defined way to indicate success and a variety of ways to indicate various failure modes. When a command terminates on a fatal signal whose number is N, Bash uses the value 128+N as the exit status.
POSIX também especifica que o valor de um comando que é terminado por um sinal é maior que 128, mas não parece especificar seu valor exato como o GNU:
The exit status of a command that terminated because it received a signal shall be reported as greater than 128.
Por exemplo, se você interromper um comando com o controle-C, o código de saída será 130, porque o SIGINT é o sinal 2 nos sistemas Unix. Então:
while [ 1 ]; do COMMAND; test $? -gt 128 && break; done