【问题标题】:continue bash script after ctrl+c from while loop在循环中按 ctrl+c 后继续 bash 脚本
【发布时间】:2015-10-11 11:36:22
【问题描述】:

是否可以使用 CTRL+C 退出 bashscript while 循环并在脚本中继续而不是退出它? 在我的脚本中,我有一个 while 函数和一个菜单函数。如果从正在运行的 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

【问题讨论】:

    标签: bash while-loop continue ctrl


    【解决方案1】:

    未经测试,但类似这样的东西

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

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

    【讨论】:

    • 我认为对 sleep 的调用阻止了它按预期工作。
    猜你喜欢
    • 2023-03-06
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    • 2012-04-01
    • 2015-12-17
    • 2020-05-25
    • 2020-09-23
    • 2013-07-08
    相关资源
    最近更新 更多