Não é possível interceptar (Ctrl ^ C) no meu script simples

3

Não sei por que não posso interceptar Ctrl ^ C neste script simples.

#!/bin/bash

for number in $(seq 10); do
        echo -n "."
        sleep 2
done

function finish() {
        echo "bye."
}

trap finish SIGINT

Eu tentei usar o INT em vez do SIGINT, sem sucesso.

RESOLVIDO:

Ok. A ordem é importante.

#!/bin/bash

function finish() {
        echo "bye."
}

trap finish SIGINT

for number in $(seq 10); do
        echo -n "."
        sleep 2
done

Isso funcionou.

    
por whitenoisedb 16.09.2014 / 02:53

1 resposta

3

Resposta inspirada em editar para OP. Por favor, não me mate ...

O pedido no script é muito importante. Primeiro, você precisa colocar a função em primeiro lugar. Você também precisa colocar a armadilha antes do loop. Algo como isso deve funcionar bem:

#!/bin/bash

function finish() {
        echo "bye bye!"
}

trap finish SIGINT

for number in $(seq 10); do
        echo "TODO: Insert work here..."
        # Insert work to do here.
done
    
por Kaz Wolfe 16.09.2014 / 06:36