0

重複の可能性:
bash シェル スクリプトで getopts を使用して長いコマンド ライン オプションと短いコマンド ライン オプションを取得する

たとえば、 -e/--email -h/--help のようなフラグを使用する方法を見つけようとしています。

更新: 現在の例:

while getopts ":ec:h" OptionArgument; do
case $OptionArgument in

        e ) S1=${OPTARG};;
        c ) S2=${OPTARG};;
        h ) usage;;
        \?) usage;;
        * ) usage;;
esac
done

ただし、空白のままにすると、何もしません。-h を追加しても実行され、使用法は表示されません。

更新2

while [ $1 ]; do
        case $1 in
                '-h' | '--help' | '?' )
                        usage
                        exit
                        ;;
                '--conf' | '-c' )

                        ;;
                '--email' | '-e' )
                        EMAIL=$1
                        ;;
                * )
                        usage
                        exit
                        ;;
        esac
        shift
done

-h/--help は機能しますが、他のすべてが失敗し、使用法が表示されます。

4

1 に答える 1

1

GNU のような長いオプション短いオプションが必要な場合は、次のスクリプトを参照して、スクリプトhttp://schaz.free.fr/getopts_long.shと例を参照してください。

例 :

#!/bin/bash
# ( long_option ) 0 or no_argument,
# 1 or required_argument, 2 or optional_argument).

Help() {
cat<<HELP
Usage :
    $0 [ --install-modules <liste des modules> ] [-h|--help]
HELP
    exit 0
}

. /PATH/TO/getopts_long.sh

OPTLIND=1
while getopts_long :h opt \
    install-modules 1 \
    help 0 "" "$@"
do
    case "$opt" in
        install-modules)
            echo $OPTLARG
        ;;
        h|help)
            Help; exit 0
        ;;
        :)
           printf >&2 '%s: %s\n' "${0##*/}" "$OPTLERR"
           Help
           exit 1
        ;;
    esac
done
shift "$(($OPTLIND - 1))"
于 2012-10-09T00:59:10.243 に答える