Múltipla ctrl + c congela o programa

1

Eu tenho um script bash "main" que executa outro script bash (23.sh). No script principal, tenho uma função que captura as operações ctrl + c e solicita uma senha. Se a senha for digitada corretamente, ela mata o arquivo principal.

No entanto, tenho um problema: quando o usuário digita "ctrl + c" duas vezes em rápida sucessão, o script congela (veja os comentários no script abaixo).

Como eu lido com isso? Em essência, eu gostaria que a função ctrl_c () fosse recursiva para que quando um usuário usasse ctrl + c quando dentro da função, ela ainda tivesse efeito. Lembro-me de muito tempo atrás (cerca de 10 anos) que me disseram que a recursão em funções é uma má ideia! Alguma solução?

#!/bin/bash
# This is the main file that runs data collection code 23.sh in an infinite loop

function ctrl_c() {
    clear
    echo "** Trapped CTRL-C0"
    sleep 1s
    echo "'''''''''''''''''''''''''''''''''''''''"
    echo "Enter Admin password and click [ENTER]: "
    # When user enters ctrl+c in here the program freezes up
    read passPhrase
    if [ $passPhrase == "pass" ]; then
        echo "Password correct"

        for i in 'seq 1 5'; do
            sleep 1
            echo -n "."
            # pkill 23.sh
            # pkill main.sh
        done
        pkill main.sh
    else
        echo "Incorrect pass phrase.  'Service Selection' screen will in 5 seconds load"
        for i in 'seq 1 5'; do
            sleep 1
            echo -n "."
        done
        # ./23.sh
    fi
}

trap ctrl_c INT

while :
do
    ./23.sh
done
    
por drN 11.12.2017 / 18:31

0 respostas

Tags