Ctrl-C в скриптах bash

Как реализовать обработку ctrl+c в сценариях bash, чтобы сценарий прерывался, а также текущую команду, запускаемую сценарием?

(Представьте, что есть сценарий, который выполняет какую-то длительную команду. Пользователь нажимает Ctrl+C и прерывает команду, но сценарий продолжается.) Мне нужно, чтобы он вел себя так, что они оба убиты.

1 ответ

Решение

Вы делаете это путем создания подпрограммы, которую вы хотите вызывать при получении 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
Другие вопросы по тегам