Pergunta

Possível duplicata:
Identificando o nome do sinal recebido no script de shell bash

Ao usar algo como trap func_trap INT TERM EXIT com:

func_trap () {
    ...some commands...
}

Existe uma maneira no bloco de funções para detectar que A armadilha chamou isso?

Algo como:

func_trap () {
    if signal = INT; then
        # do this
    else
        # do that
    fi
}

Ou preciso escrever uma função separada para cada tipo de armadilha que faz algo diferente? Existe uma variável Bash que contém o mais recente sinal recebido?

Desde já, obrigado!

Foi útil?

Solução

Nenhuma documentação sugere qualquer argumento ou variável que mantenha o sinal preso; portanto, você terá que escrever uma instrução FUNÇÃO/TRAP para cada armadilha que deseja se comportar de maneira diferente.

Outras dicas

Você pode implementar sua própria função de armadilha que passa automaticamente o sinal para a função:

trap_with_arg() {
    func="$1" ; shift
    for sig ; do
        trap "$func $sig" "$sig"
    done
}

$ trap_with_arg func_trap INT TERM EXIT

O primeiro argumento para func_trap será o nome do sinal.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top