Рейтинг:1

Как мне зациклить мое причудливое диалоговое меню Bash?

флаг ag

Итак, вот что у меня есть, и я очень доволен тем, что у меня есть до сих пор, но я хочу добавить цикл, поэтому, когда команда будет выполнена, запросите удар «ВВОД», и он отправит вас обратно в меню...

#!/бин/баш
cmd=(dialog --keep-tite --menu "Добро пожаловать в служебное меню Эрни v1.0:" 22 76 16)

options=(1 "Скрыть соединение"
         2 «Отключиться от VPN»
         3 «Статус соединения»
         4 «Обновить систему»
         5 «Убрать беспорядок после обновления» 
         6 «Глубокая очистка (трояны и вредоносное ПО)»
         7 «Спидометр (монитор полосы пропускания)»
         8 «Bmon (монитор полосы пропускания)»
         9 «Проверить скорость полосы пропускания (вверх и вниз)»
         10 «Снег в терминале»
        )

варианты=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)

на выбор в $choices 
    делать    
        case $выбор в
        1)
            экспрессвпн подключение
            ;;
        2)
            экспрессвпн отключить
            ;;
        3)
            статус expressvpn && nmcli dev wifi
            ;;
        4)
            sudo apt update && sudo apt upgrade -y #!//&& sudo apt-get dist-upgrade -y не уверен, хочу ли я выполнять эту часть....
            ;;
        5)
            sudo apt update && sudo apt -f install && sudo dpkg --configure -a && sudo apt clean && sudo apt autoremove && sudo -k && exit
            ;;
        6)
            sudo chkrootkit -d && sudo rkhunter -c --rwo && sudo -k
            ;;
        7)
            спидометр -l -r wlp2s0 -t lo -m $(( 1024 * 1024 * 3/2 ))
            ;;
        8)
            бмон
            ;;
        9)
            тест скорости
            ;;
        10)
            ./снег.ш
            ;; 
    эсак
сделано
Terrance avatar
флаг id
Одна проблема, которую я вижу с этим циклом, и ответ ниже заключается в том, что у вас нет выхода. Я бы сделал вариант 11 для выхода. Тогда строка case будет просто `11) exit;;`, если вы не хотите использовать Ctrl+C.
Erniemenendez avatar
флаг ag
Если вы запустите этот скрипт, у него есть две опции внизу, одна из которых «ОК». Другой — «CANCEL», который завершает сценарий. Все равно спасибо за информацию!!!! Я мог бы использовать его в другом сценарии! РЕДАКТИРОВАТЬ: да, вы правы. "ОТМЕНА" возвращает меня в меню, лол
Рейтинг:2
флаг cn

В конце скрипта добавьте:

read -p "Нажмите Enter, чтобы продолжить..."
exec /bin/bash "$0" "$@"

в исполнитель команда повторно выполнит сценарий, повторно используя текущий процесс.

Erniemenendez avatar
флаг ag
СУПЕР!!!! Теперь мой сценарий готов!!! ты Гленн Джекман гений!!! СПАСИБО!!!
vanadium avatar
флаг cn
Я предпочитаю работать с бесконечным циклом в сценарии, а затем включать в меню опцию для выхода (команда: `exit` или `break`)
Рейтинг:0
флаг ag

Итак, если кто-то заинтересован в переработке этого меню... Вот как выглядит мой конечный продукт;

#!/бин/баш
cmd=(dialog --keep-tite --menu "Добро пожаловать в служебное меню Эрни v1.0:" 22 76 16)

options=(1 "Скрыть соединение"
         2 «Отключиться от VPN»
         3 «Статус соединения»
         4 «Обновить систему»
         5 «Убрать беспорядок после обновления» 
         6 «Глубокая очистка (трояны и вредоносное ПО)»
         7 «Спидометр (монитор полосы пропускания)»
         8 «Bmon (монитор полосы пропускания)»
         9 «Проверить скорость полосы пропускания (вверх и вниз)»
         10 «Снег в терминале»
№11 "выход"
        )

варианты=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)

на выбор в $choices 
    делать    
        case $выбор в
        1)
            экспрессвпн подключение
            ;;
        2)
            экспрессвпн отключить
            ;;
        3)
            статус expressvpn && nmcli dev wifi
            ;;
        4)
            sudo apt update && sudo apt upgrade -y #!//&& sudo apt-get dist-upgrade -y не уверен, хочу ли я выполнять эту часть....
            ;;
        5)
            sudo apt update && sudo apt -f install && sudo dpkg --configure -a && sudo apt clean && sudo apt autoremove && sudo -k
            ;;
        6)
            sudo chkrootkit -d && sudo rkhunter -c --rwo && sudo -k
            ;;
        7)
            спидометр -l -r wlp2s0 -t lo -m $(( 1024 * 1024 * 3/2 ))
            ;;
        8)
            бмон
            ;;
        9)
            тест скорости
            ;;
        10)
            ./снег.ш
            ;;
         *)
            выход
      эсак
read -p "Нажмите Enter, чтобы продолжить..."
exec /bin/bash "$0" "$@"
      сделано

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.