Questão Bash fornece opções e passa variável na escolha


Tentando dar uma opção aos usuários de um instalador para escolher "Desenvolvimento" ou "Estável". Por padrão, o instalador "git checkout 1.1.0", mas eu estou transformando 1.1.0 em $GIT_VERSION e tentando fazer uma maneira limpa de definir isso no começo.

Tentando definir $GIT_VERSION para master ou 1.1.0 com opção de 1,2 ou 3 (sendo 3 desistentes). Eu tenho um começo difícil do que estou tentando fazer ...

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

0


origem


especificamente, isso está errado: $GIT_VERSION=master - não coloque o sigilo no lado esquerdo da tarefa. - glenn jackman
Também perguntou em stackoverflow.com/q/22239152/1126841 (que é o site correto para esta questão). - chepner


Respostas:


Eu provavelmente faria algo como

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

1



Obrigado! Seria possível simplesmente definir o valor (master ou 1.1.0) como uma variável a ser inserida no dizer, git checkout $Variable_Name declaração depois? A parte do git do script vem muito mais tarde, já que recebi toda a entrada do usuário no começo. - d3c0y
Claro, apenas armazene o valor para uma variável: branch=${versions[REPLY-1]}. - choroba