ifステートメントで一致するパラメータを確認するのにかかる時間の短縮

ifステートメントで一致するパラメータを確認するのにかかる時間の短縮

あなたがしなければならないことを実行するコードスニペットがあります。

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

最初のパラメータが(パッチ、メジャー、マイナー、プリリリース)のいずれかであることを確認してください。

しかし、これを行うための短くて簡潔な方法はありますか?

ベストアンサー1

が利用可能で、caseすべての標準シェルで動作します。

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

Bash/ksh/zshの代替案は、正規表現マッチングを使用することです。

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

おすすめ記事