продолжить скрипт bash после ctrl+c из цикла while

Можно ли выйти из цикла bashscript с помощью CTRL+C и продолжить выполнение сценария, а не выходить из него? В моем сценарии у меня есть функция while и функция меню. Я хочу повторно запустить функцию меню, если CTRL+C нажата из работающего цикла while.

#!/bin/bash

function while_loop {
D=1
while [ "1" == $D ]
do
        sleep 5
        echo $D
done
}


function main_menu {
M="i"
while [ "$M" != "e" ]; do
echo -e "auto update:\ta"
echo -e "exit:\t\te"
read -n 1 M
case $M in
    a)  while_loop
        ;;
    e)
        exit 1
        ;;
    *)
        echo "Wrong input!"
esac
done
}

main_menu

person Michi Ditzzel    schedule 11.10.2015    source источник


Ответы (1)


Не проверено, но что-то вроде этого

trap my_handler INT
my_handler() { D=0; }

Команда trap позволяет перехватывать сигналы и добавлять собственную обработку сигналов.

person glenn jackman    schedule 11.10.2015
comment
Я думаю, что вызов sleep мешает этому работать должным образом. - person Tom Fenech; 11.10.2015