在 ctrl+c 之后从 while 循环继续 bash 脚本

continue bash script after ctrl+c from while loop

是否可以使用 CTRL+C 退出 bashscript while 循环并继续执行脚本而不是退出它? 在我的脚本中,我有一个 while 函数和一个菜单函数。如果从 运行ning while 循环中按下 CTRL+C,我想重新 运行 菜单功能。

#!/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

未经测试,但类似这样

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

trap 命令允许您拦截信号并添加您自己的信号处理。