Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2722

Bash の getopts が関数内で動かないときの解決方法

$
0
0

問題の説明

Bash で実行したスクリプトで、関数内で getoptsを実行したが思ったように動かない。

原因

getoptsはデフォルトで $@に相当するものを引数リストとみなして解析する。
関数内ではこれは 関数の引数であって、スクリプトの引数ではないので、期待通りに動かないのであった。

解決方法

  • スクリプトのトップレベルで、スクリプトの引数を変数に入れ、それを getopts で指定する
トップレベル.sh
  parse(){while getopts"abc" OPT argv;do
      処理...
    done}argv=$@
  parse
  • トップレベルの $@を持ち回る。この場合、関数に独自の引数を設定することはできないと思う
トップレベル.sh
  parse(){while getopts"abc" OPT;do
      処理...
    done}

  parse $@

さいごに

シェルあまり詳しくないので、間違いや改善点がありましたら教えて下さい。


Viewing all articles
Browse latest Browse all 2722

Trending Articles