Edited at

bashでロングオプションとショートオプションの両方に対応する

More than 3 years have passed since last update.

getoptsを利用します。

getoptsの引数の後ろに:をつけるとOPTARG変数にその値が保持されるので、-の後ろにつけてロングオプションに対応します。


sample.sh

#!/bin/bash

help() {
echo help
}

version() {
echo version
}

while getopts ":vh-:" opt; do
case
"$opt" in
-)
case "${OPTARG}" in
help)
help
;;
version)
version
;;
esac
;;
h)
help
;;
v)
version
;;
esac
done


実行

$ ./sample --help

help
$ ./sample -h
help
$ ./sample --version
version
$ ./sample -v
version

以下の記事を参考にさせていただきました。

bash によるオプション解析 - Qiita