bash の組み込みコマンドである getopts を使ったオプション解析の例
-abp のように複数のオプションをまとめて指定することは出来るが、長いオプションが使えないことに加えて、
option は必ず positional よりも前に記述する必要があるため使い勝手はイマイチ。
これらの制約を解消したい場合は通常コマンドである getopt を使うと良い。
ただし getopts と case .. esac とでオプションの定義を冗長に繰り返さないといけないことに加えて、
特にオプションが大量にある場合 getopts のところが凄く長くなってしまうのが面倒である点は getopt でも解消できない。
#!/usr/bin/env bash while getopts ab: OPTION; do case "$OPTION" in a) echo "alpha: $OPTION" ;; b) echo -e "bravo: $OPTION ${OPTARG@Q}" ;; esac done shift $(( OPTIND - 1 )) echo "ARGS[$#]: $@"
$ ./getopts_sample.sh -a -ab"p p" -b"q q" -b "r r" x y alpha: -a alpha: -a bravo: -b 'p p' bravo: -b 'q q' bravo: -b 'r r' ARGS[2]: x y
-abp のように複数のオプションをまとめて指定することは出来るが、長いオプションが使えないことに加えて、
option は必ず positional よりも前に記述する必要があるため使い勝手はイマイチ。
これらの制約を解消したい場合は通常コマンドである getopt を使うと良い。
ただし getopts と case .. esac とでオプションの定義を冗長に繰り返さないといけないことに加えて、
特にオプションが大量にある場合 getopts のところが凄く長くなってしまうのが面倒である点は getopt でも解消できない。
- Qiita / b4b4r07 / 2017-02-14: bash によるオプション解析
タグ
コメントをかく