키보드 입력을 통해 bash 루프를 종료하는 방법은 무엇입니까?

키보드 입력을 통해 bash 루프를 종료하는 방법은 무엇입니까?

bash lopp한테는 AS가 있어

#!/bin/bash
for (( c=0; c<=1000000; c++ ))
do  
SOME STUFF HERE
done

키보드 입력으로 긴 루프를 중단했지만 Ctrl+C스크립트 Ctrl+C가 종료되었습니다. 현재 루프를 계속하고 STUFF현재 루프에서 실행이 완료된 후 루프를 중단할 수 있는 대안을 찾고 있습니다 .

답변1

한 가지 방법은 다음과 같이 Control-C를 사용하여 trap신호를 보내고 break종료하는 것입니다 loop.

#!/bin/bash
trap break INT
for (( c=0; c<=1000000; c++ ))
do  
SOME STUFF HERE
done
echo "I have broken out of the interminably long for loop"
trap - INT
sleep 1
echo "END."

이것이 어떻게 작동하는지에 대한 자세한 내용은 다음과 같습니다.

trap break INT

그리고

trap - INT

INT우리는 "break"를 사용하여 (break, 일명 SIGINT) 신호가 생성될 때(Ctrl+C를 누를 때 발생함) break를 실행하여 루프를 중단하고 싶다고 트랩에 알립니다 .

"break" 대신 따옴표로 쉘 명령을 넣을 수 있으며 주어진 신호(우리의 경우 INT)가 생성될 때 실행됩니다.

마지막으로 트랩을 다시 실행하여 -"INT" 핸들러를 기본 작업으로 복원합니다.

다음은 추가 자료를 위한 몇 가지 리소스와 예입니다.

관련 정보