É possível detectar * qual * TRAP sinal em bash? [duplicado
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!
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.