스크립트가 현재 실행중인 명령뿐만 아니라 스크립트가 중단되도록 bash 스크립트에서 ctrl+ c처리를 어떻게 구현 합니까?
(장기 실행되는 명령을 실행하는 스크립트가 있다고 상상해보십시오. 사용자가 ctrl+를 c누르고 명령을 중단하지만 스크립트는 진행됩니다.) 둘 다 종료되는 방식으로 동작해야합니다.
답변
SIGINT가 수신 될 때 호출하려는 서브 루틴을 작성하여이를 수행하고 실행해야합니다 trap 'subroutinename' INT
.
예:
#!/bin/bash
int_handler()
{
echo "Interrupted."
# Kill the parent process of the script.
kill $PPID
exit 1
}
trap 'int_handler' INT
while true; do
sleep 1
echo "I'm still alive!"
done
# We never reach this part.
exit 0