getopsパラメータの割り当てを管理する方法

getopsパラメータの割り当てを管理する方法

これが私の最初の質問です。

オプションを含む小さなスクリプトを作成しようとしていますが、これをやっていますgetopts。奇妙なことは次のとおりです。

パラメータが変数に割り当てられていないか、常にifコードブロックに入ります(これが問題のようです)。

スクリプトは次のとおりです。

#!/bin/bash

function work () {
    echo "It Works" }

function help () {
    echo "Print some help and options" }

while getopts ha:b: OPT; do
    case $OPT in
        -h)
            help
            exit
            ;;
        -a)
        OPTA=$OPTARG
        ;;
        -b)
        OPTB=$OPTARG
            ;;
        \?)
        help
            break
            ;;
    esac done

echo $OPTB

if  [[ -z $OPTB ]]; then
    echo "ERROR. Needs OPTB"
fi

if [[ -n $OPTB ]]; then
    echo "All OK untill here"
    work
fi

常にエラーメッセージを印刷します。

答え1

getoptsオプションから「-」記号を削除してください。

したがって、以下が必要です。

while getopts ha:b: OPT; do
    case $OPT in
        h)
            help
            exit
            ;;
        a)

 ....

getoptsunset OPTA OPTB変数はスクリプトが受け取る環境にある可能性があるため、()を呼び出す前に変数を消去する必要があります。また、「オプションなし」と「空の引数を持つオプション」を区別できないため、-b ""スクリプト呼び出しが有効な場合も考慮してください。[[ -z $OPTB ]]-b-b

関連情報