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

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

나는 bash loppas를 가지고있다

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

다음과 같은 키보드 입력으로 긴 루프를 중단 Ctrl+C하지만 Ctrl+C단순히 스크립트를 종료합니다. 현재 사이클을 계속하고 STUFF현재 사이클에서 실행을 마친 후 루프를 중단할 수 있는 대안을 찾고 있습니다 .

답변1

한 가지 방법은 다음 과 같이 trapControl-C 신호 로 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"를 사용하여 (인터럽트, 일명 SIGINT) 신호가 생성될 때(Ctrl+C를 누를 때 발생) 루프를 중단하기 위해 break를 실행하고 싶다고 트랩에 알립니다.

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

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

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

관련 정보