bash 스크립트의 Ctrl-C 어떻게 구현 합니까? (장기 실행되는 명령을 실행하는 스크립트가

스크립트가 현재 실행중인 명령뿐만 아니라 스크립트가 중단되도록 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