Bash でオプションの入力引数を取る

MD Aminul Islam 2023年6月20日
Bash でオプションの入力引数を取る

引数を渡さずに、または引数を渡さずに、両方で実行できる動的関数を作成する必要がある場合があります。 これを行うには、関数を呼び出すときに引数が渡されなかった場合にデフォルトの引数を使用できるように、これらの引数にいくつかのデフォルト値を設定する必要があります。

この記事では、関数のオプションの入力引数を作成する方法を示します。 また、トピックをより簡単にするために、いくつかの例と説明も見ていきます。

Bash でオプションの入力引数を取る

以下の例では、デフォルト値を出力します。 デフォルト値を含む 4つの変数を宣言しました。

この例のコードは次のようになります。

VAR1=${1:-foo}
VAR2=${2:-bar}
VAR3=${3:-1}
VAR4=${4:-$(date)}

echo "$VAR1"
echo "$VAR2"
echo "$VAR3"
echo "$VAR4"

コードの実行後、以下の出力が得られます。

foo
bar
1
Sat Aug 13 14:59:31 +06 2022

次に、高度な例を見てみましょう。 以下に示す例では、0、1、および 2つのパラメーターで動作し、関数内にデフォルト値を設定できる関数を作成しました。

ここで、この例のコードは次のようになります。

FindSum()
{
    VAR1=${1:-40}
    VAR2=${2:-50}

    if [ $# -lt 1 ];
    then
        echo "The provided parameters are: $VAR1, $VAR2."
    elif [ $# -lt 2 ];
    then
        echo
        echo "The provided parameters is: $VAR2."
    else
        echo
        echo "No parameters provided"
        VAR1=$1
        VAR2=$2
    fi
    SUM=$((VAR1+VAR2))
    echo "The sum of $VAR1 and $VAR2 is $SUM"
}

FindSum
FindSum 40
FindSum 70 30

コードを部分的に説明しましょう。

まず、VAR1=${1:-40}VAR2=${2:-50} 行を使用して、変数のデフォルト値を設定します。 その後、これらの変数の値が与えられているかどうかを確認しました。

値がそれらを提供しない場合は、デフォルト値を使用する必要があります。 それ以外の場合は、ユーザーが指定した値を使用してください。

最後に、SUM=$((VAR1+VAR2)) 行を使用して合計演算を実行し、結果を出力しました。 ここでは、FindSum で引数なしで関数を呼び出しました。

ここでも、FindSum 40 という行を使用して、1つの引数で関数を呼び出しました。 そして、FindSum 70 30 という行を使用して、2つの引数で関数を呼び出しました。

The provided parameters are: 40, 50.
The sum of 40 and 50 is 90

The provided parameters is: 50.
The sum of 40 and 50 is 90

No parameters provided
The sum of 70 and 30 is 100

この記事で使用するコードはすべて Bash で記述されています。 Linux シェル環境でのみ動作します。

著者: MD Aminul Islam
MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn

関連記事 - Bash Input