Ctrl-C em scripts bash

21

Como faço para implementar o ctrl + c manipulando em scripts bash para que o script seja interrompido, bem como o comando atualmente em execução lançado pelo script?

(Imagine que há um script que executa um comando de longa duração. O usuário pressiona ctrl + c e interrompe o comando, mas o script continua.) Eu preciso disso se comportar de uma forma que ambos são mortos.

    
por kolypto 05.11.2011 / 14:50

1 resposta

23

Você faz isso criando uma sub-rotina que deseja chamar quando o SIGINT é recebido e precisa executar trap 'subroutinename' INT .

Exemplo:

#!/bin/bash

int_handler()
{
    echo "Interrupted."
    # Kill the parent process of the script.
    kill $PPID
    exit 1
}
trap 'int_handler' INT

while true; do
    sleep 1
    echo "I'm still alive!"
done

# We never reach this part.
exit 0
    
por 05.11.2011 / 14:59