Скрипт Bash, который должен выполнять какие-то действия, когда первая команда прерывается нажатием CTRL+C

Скрипт Bash, который должен выполнять какие-то действия, когда первая команда прерывается нажатием CTRL+C

Я хочу сделать скрипт bash для автоматизации простой задачи. Эта задача включает запуск program(не мной созданного), который что-то делает, пока пользователь не нажмет CTRL+C. После этого мне нужно process the output. Я написал это:

#!/bin/bash
program
process the output

programзапускается как и ожидалось, но когда я нажимаю CTRL+C, process the outputне запускается. Держу пари, что мой скрипт просто полностью завершается при нажатии CTRL+C.

Как мне добиться того, что мне нужно?

решение1

Установите обработчик сигнала для SIGINT:

trap "echo Ctrl+C received" INT
program
trap - INT
process the output

Связанный контент