Назад | Перейти на главную страницу

Метод сохранения переменной чтения во время цикла while

После «Введите имя сервера» и установки $servselect переменная в скрипте ниже переменная теряется после выбора параметров «Привет» и «До свидания». Для этого необходимо снова заполнить запрос «Введите имя сервера». Есть ли способ сохранить эту переменную до полного выхода из скрипта? Любой совет будет очень признателен.

#!/bin/bash
#
while true; do
    read -p "Enter server name: " servselect
    servselect=${servselect:-servselect}
    echo $servselect has been selected!

    printf '%s\n' \
        "" \
        "[A] Hello" \
        "[B] Goodbye" \
        "[Q] Quit" \
        ""
        read -n1 -p 'Enter response here:' response
        case $response in
            [Aa]* )
                printf '%s\n' \
                    "" \
                    "Hello, $servselect" \
                    ""
                    ;;
            [Bb]* )
                printf '%s\n' \
                    "" \
                    "Goodbye, $servselect" \
                    ""
                    ;;
            [Qq]* )
                printf '%s\n' \
                    "" \
                    "Quitting..." \
                    ""
                    break
                    ;;
            * )
                printf '%s\n' \
                    "" \
                    "Please choose A, B, or Q" \
                    ""
                    ;;
        esac
done

Вы устанавливаете его внутри цикла, поэтому он будет постоянно предлагать вам это.

У меня было бы два цикла: один для запроса имени сервера и продолжения запроса до тех пор, пока не будет предоставлено действительное значение, а затем для выполнения варианта A или B или выхода.

По таким вопросам чистого программирования, как этот, вам может быть лучше спросить на stackexchange