Bash скриптинг - выход из подменю

Запись в багтрекере на https://bugs.freedesktop.org/10510 ("Xorg должен использовать более маловероятную комбинацию клавиш, чем Control-Alt-Backspace в качестве клавиши zap сервера") была закрыта как "WORKSFORME" после того, как было указано, что "zapping [теперь] отключен по умолчанию", так что, я думаю, поэтому они больше не видят причин менять его. Так что, похоже, что zapping в целом устарел как повседневная функция.

1
20.12.2017, 01:10
1 ответ

Чтобы вызвать повторное отображение меню, добавьте внешний цикл вокруг selectи всегда breakвне цикла select, когда выбрана опция. Кроме того, в операторе case... esacиспользуйте не настоящие пункты меню, а числа, которые делают код более читабельным, а также более простым в сопровождении.

submenu() {
    while true; do
        select submenu1 in 'Submenu 1' 'Submenu 2' 'Submenu 3' 'Exit to main menu'
        do
            case $REPLY in
                1) echo 'SubMenu1' ;;
                2) echo 'SubMenu2' ;;
                3) echo 'SubMenu3' ;;
                4) break 2 ;;
                *) echo 'Please select an option.' >&2
            esac
            break
        done
    done
}

while true; do
    select mainMenu in 'Main Menu 1' 'Main Menu 2' 'Main Menu 3' 'Quit'
    do
        case $REPLY in
            1) submenu ;;
            2) echo 'MainMenu2' ;;
            3) echo 'MainMenu3' ;;
            4) break 2 ;;
            *) echo 'Please select an option.' >&2
        esac
        break
    done
done
1
27.01.2020, 23:32

Теги

Похожие вопросы