シェルで長い形式の引数を解析するにはどうすればいいですか? 質問する

シェルで長い形式の引数を解析するにはどうすればいいですか? 質問する

私が目にするものはすべて、または、 1 文字のオプションのみをサポートするgetopt少し凝った を使用しています (例: ですが、ではありません)。凝った長いオプションを実行したいのです。getopts-h--help

ベストアンサー1

私はこんなことをしたことがあるこれ:

_setArgs(){
  while [ "${1:-}" != "" ]; do
    case "$1" in
      "-c" | "--configFile")
        shift
        configFile=$1
        ;;
      "-f" | "--forceUpdate")
        forceUpdate=true
        ;;
      "-r" | "--forceRetry")
        forceRetry=true
        ;;
    esac
    shift
  done
}

ご覧のとおり、これは 1 文字のオプションと長いオプションの両方を適切にサポートしています。 の場合のように、各引数に値を関連付けることができます--configFile。また、設定できるオプションなどに関して人為的な制限がなく、非常に拡張性があります。

上記のように、は、"${1:-}"bash の「厳密」モード ( ) で実行しているときに「バインドされていない変数」エラーが発生するのを防ぎますset -euo pipefail

おすすめ記事