Bash bietet Optionen und übergibt Variablen bei Auswahl

Bash bietet Optionen und übergibt Variablen bei Auswahl

Ich versuche, den Benutzern eines Installationsprogramms die Möglichkeit zu geben, zwischen „Entwicklung“ und „Stabil“ zu wählen. Standardmäßig führt das Installationsprogramm „git checkout 1.1.0“ aus, aber ich ändere 1.1.0 in $GIT_VERSIONund versuche, eine saubere Möglichkeit zu finden, dies am Anfang einzustellen.

$GIT_VERSIONIch versuche, die Einstellung auf masteroder mit den Optionen 1, 2 oder 3 vorzunehmen 1.1.0(3 bedeutet Beenden). Ich habe einen groben Anfang von dem, was ich versuche zu tun ...

PS3='Do you want to install Lastest Stable or Latest Developement: '
options=("Stable" "Developement" "Quit")
select GIT_VERSION in "${options[@]}"
do
    case $GIT_VERSION in
        "Stable")
            $GIT_VERSION=1.1.0 
            echo "Installing 1.1.0..."
            ;;
        "Developement")
            $GIT_VERSION=master
            echo "Installing latest developement version..."
            ;;
        "Quit")
            break
            ;;
        *) echo invalid option;;
    esac
done

Antwort1

Ich würde wahrscheinlich so etwas machen wie

#! /bin/bash
names=(Stable Developement)
versions=(master 1.1.0)
select option in "${names[@]}" Quit ; do
    if (( REPLY > 0 && REPLY <= 1 + ${#names[@]} )) ; then
        if [[ $option != Quit ]] ; then
            git checkout ${versions[REPLY-1]}
        fi
        exit
    else
        echo Invalid reply.
    fi
done

verwandte Informationen