프로그램을 정지하려면 Ctrl + C를 여러 번 사용하세요.

프로그램을 정지하려면 Ctrl + C를 여러 번 사용하세요.

다른 bash 스크립트(23.sh)를 실행하는 "기본" bash 스크립트가 있습니다. 기본 스크립트에는 Ctrl+ C작업을 캡처하고 비밀번호를 묻는 기능이 있습니다 . 비밀번호를 올바르게 입력하면 기본 파일이 종료됩니다.

그러나 문제가 있습니다. 사용자가 Ctrl+를 C빠르게 연속해서 두 번 입력하면 스크립트가 멈춥니다(아래 스크립트의 설명 참조).

이 문제를 어떻게 처리해야 합니까? 본질적으로 나는 ctrl_c() 함수가 재귀적이어서 사용자가 함수 내에서 Ctrl+를 사용할 때 C여전히 작동하기를 원합니다. 나는 오래 전에(약 10년 전) 함수의 재귀가 다음과 같다는 말을 들었던 것을 기억합니다.나쁜 생각! 해결책이 있나요?

#!/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

관련 정보