다른 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