Reduza se a verificação de instrução para o argumento correspondente

0

Eu tenho esse código que faz o que deve fazer:

first_arg="$1";
if [ "$first_arg" != "patch" -a "$first_arg" != "major" -a "$first_arg" != "minor" -a "$first_arg" != "prerelease" ]; then
  echo "First argument needs to match a valid npm version argument (patch, minor, major, etc).";
  exit 1;
fi

está verificando se o primeiro argumento é um dos (patch, maior, menor, pré-lançamento).

No entanto, existe uma maneira mais curta / menos detalhada de fazer isso?

    
por Alexander Mills 14.06.2018 / 08:24

1 resposta

6

Você pode usar case , que funciona em qualquer shell padrão:

case "$1" in
    patch|major|minor|prerelease) ;;
    *) echo "First argument needs to match a valid npm version argument (patch, minor, major, etc)." >&2; exit 1;;
esac

Uma alternativa no Bash / ksh / zsh é usar uma correspondência de expressão regular:

if ! [[ $1 =~ ^(patch|major|minor|prerelease)$ ]]; then
    echo "First argument needs to match a valid npm version argument (patch, minor, major, etc)." >&2;
    exit 1;
fi
    
por 14.06.2018 / 08:34