34
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

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

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

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
34
Help us understand the problem. What are the problem?