地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

シェルスクリプトでオプション解析

シェルスクリプトのオプション解析 シェルには、コマンドオプションの解析を行う「getopts」というコマンドがあります。

スクリプトに「シェル名 -オプション」のようにオプションを利用して引数を渡したい場合に使用します。

$ which getopt
/usr/bin/getopt

getoptコマンドの定義は以下の通りです。 getopt オプション文字 一時格納変数 オプション文字に「d:ef:」と定義することで、「-d」「-e」「-f」のオプションを取得することを指示します。 オプション文字の後ろに「:」(コロン)を付けることで、「-d test」オプションのパラメータを指定できます。 whileとcase文でオプション解析処理を実行できます。 変数${OPTARG}は、オプションに続く文字列が格納さる「getopts」コマンド固有の変数です。

$ cat ./script.sh 
#!/bin/sh

while getopts d:ef: opt
do
  case ${opt} in
  d)
    OPT_D=${OPTARG};;
  e)
    OPT_E="flag on";;
  f)
    OPT_F=${OPTARG};;
  \?)
    exit 1;;
  esac
done

echo "OPT_D=${OPT_D}"
echo "OPT_E=${OPT_E}"
echo "OPT_F=${OPT_F}"