shell script eee

0

Eu tenho este script, mas não está funcionando, tentei com & & em vez disso -a mas não funciona. a ideia é sair com erro quando o parâmetro $ 1 for diferente de 'normal', 'beta' e 'estável

if [ [ "$1" != "normal" ]  -a [ "$1" != "beta" ] -a [ "$1" != "stable" ] ]; then
    echo "Error, type parameter mode version: normal, beta, stable"
    exit
else
    echo "Site: ${1}"
fi

Eu também tentei com:

if [ [ "$1" != "normal" ]  && [ "$1" != "beta" ] && [ "$1" != "stable" ] ]; then

obrigado

    
por stackdave 22.03.2018 / 11:25

1 resposta

4

Para vários ANDs, use

if [ condition ] && [ condition ] && [ condition ]
then
   code
fi

Isso também funciona com OR ( || ), por exemplo

if [ "$1" = "normal" ] || [ "$1" = "beta" ] || [ "$1" = "stable" ]
then
    printf 'Site: %s\n' "$1"
else
    echo 'Error, type parameter mode version: normal, beta, stable' >&2
    exit 1
fi

No seu caso, você também pode usar:

case "$1" in
    normal|beta|stable)
        printf 'Site: %s\n' "$1" ;;
    *)
        echo 'error' >&2
        exit 1
esac
    
por 22.03.2018 / 11:28