捕获 Ctrl+C 并在 Bash 中重复 while 循环

捕获 Ctrl+C 并在 Bash 中重复 while 循环

我试图捕获CtrlCCtrlZ清除屏幕并重复循环而不退出 - 它正在工作,但我需要按下Enter才能重复循环。

#!/bin/bash
trap 'clear' 2 20
while :
do
        clear
        echo -e "\n\t1. Create a user"
        echo -e "\t2. Create a Group"
        echo -e "\t3. Delete user"
        echo -e "\t4. Reset Password"
        echo -e "\n\tSelect one of the option : \c"
        read OPT
done

按下CtrlC或 时CtrlZ会清除屏幕,但不会再次显示菜单。

我想用它作为登录脚本,用户登录后,只让此菜单工作。如果用户输入CtrlCCtrlZ脚本必须重新显示菜单,而无需进入 shell。

答案1

#!/bin/bash

trap 'menu' 2 20

menu()
{
   clear
   echo -e "\n\t1. Create a user"
   echo -e "\t2. Create a Group"
   echo -e "\t3. Delete user"
   echo -e "\t4. Reset Password"
   echo -e "\n\tSelect one of the option : \c"
}

while :; do
   menu
   read OPT
done

如果你不想按 Enter 键重复循环,请将读取命令更改为:

read -n 1 OPT

相关内容