O manipulador de traps não está funcionando?

0

O problema está errado com a seguinte armadilha?

trap cleanup SIGINT

cleanup() {
            echo "Exiting script ..."
        }

Eu nunca vejo o comando echo ao exibir Ctrl+c

O snippet está na parte inferior de um script maior com alguns while loops infinitos.

$ bash --version
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
    
por pkaramol 02.02.2018 / 11:11

1 resposta

3

O trap tem que ter sido ativado / instalado no momento em que você pressionar Ctrl + C , ou (obviamente) não irá disparar. A função também deve ter sido definida nesse ponto. Isso significa mover o código até o topo (em algum lugar no começo) do seu script.

Adicionalmente, você provavelmente deve definir a função antes de instalar o trap, ou você receberá um erro "not found" se o trap for disparado entre os dois.

Exemplo:

#!/bin/bash

cleanup() { echo 'Exiting script ...'; }

trap cleanup SIGINT

sleep 300
    
por 02.02.2018 / 11:23