1

Я пытался перехватить Ctrl C или Ctrl Z, очистить экран и повторить цикл без выхода - он работает, но мне нужно нажать 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

При нажатии Ctrl C или Ctrl Z он очищает экран, но больше не отображает меню.

Я хочу использовать это в качестве сценария входа в систему, когда пользователь входит в систему и получает только это меню для работы. Если пользователь вводит Ctrl C или Ctrl Z, сценарий должен снова отобразить меню, не заходя в оболочку.

1 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .