シェルスクリプトの引数処理〜getoptsで小技〜

今まであまり使ったことがなかったのだが、「getopts」コマンド、これはなかなか便利です。今回はシェルスクリプトの引数に「-X」を指定する場合の書き方として、この「getopts」コマンドを紹介。色々と活用できそう。

getoptsコマンドについて

シェルスクリプトには、コマンドのオプションを解析したりチェックしたりするための「getopts」というコマンドがある。スクリプトに「シェル名 -l abc」のようにオプションを利用して引数を渡したい場合に使用する。では、早速で「getopts」コマンドを利用したサンプルスクリプトで動作を確認していきたいと思う。

サンプルスクリプトで検証


#!/bin/bash
while getopts l:t: opt
do
case ${opt} in
l)
LIST=${OPTARG};;
t)
TYPE=${OPTARG};;
*)
exit 1;;
esac
done
echo "-l :${LIST}"
echo "-t :${TYPE}"

「l:t:」の部分は、「-l」と「-t」というオプションを取得するという意味になる。オプション文字の後ろに「:」(コロン)を付けて、複数指定ができるのが便利なところ。変数「opt」には、「l」または「t」という文字列が順番に格納され、case文で「l」の場合、「t」の場合と処理を分岐させている。変数${OPTARG}は、オプションに続く文字列が格納される「getopts」コマンド固有の変数。
実際にこのスクリプトを実行すると、以下のような結果となる。

  • 実行結果


# ./getops.sh -l listA -t typeB
-l :listA
-t :typeB