💬
シェルスクリプトで引数解析をするテンプレート
何を使うのか
getopts
とかありますが、ロングオプションが使えて高機能なgetopt
を使います。
GNU版とBSD版で仕様に違いがあるらしいですが、GNU版に準拠します。
テンプレート
_usage() {
echo "usage"
echo " -a | --arg <str>"
echo " -h | --help Show this message and exit"
}
ARGUMENT="${@}"
option_short="a:dh"
option_long="arg:,debug,help"
OPT=$(getopt -o ${_opt_short} -l ${_opt_long} -- ${ARGUMENT})
[[ ${?} != 0 ]] && exit 1
unset option_short option_long
eval set -- "${OPT}"
while :; do
case ${1} in
-a | --arg)
arg="${2}"
shift 2
;;
-h | --help)
_usage
shift 1
exit 0
;;
--)
shift
break
;;
*)
echo "Unknows options ${1}" >&2
exit 1
;;
esac
done
Discussion