AFAIK, a única maneira de "capturar" um sinal como este é usar o comando trap
. Que você especificamente configurar uma ação (função ou comando (s)) para executar quando um sinal particular é recebido.
Exemplo
#!/bin/bash
cleanup () {
...do cleanup tasks & exit...
}
trap "cleanup" SIGPIPE
### MAIN part of script
Essa abordagem poderia facilmente ser feita em um único marcador versus um script. A "função" que é chamada, cleanup
, quando SIGPIPE
é vista, poderia facilmente ser também um elaborado "one-liner".
$ trap "cmd1; cmd2; cmd3;" SIGPIPE
Se você olhar para a pergunta original que você vinculou: Encerrando um loop infinito , você notará que essa abordagem também está representada lá.