入力引数が Bash に存在するかどうかを確認する

Olorunfemi Akinlua 2023年6月20日
  1. $# を使用して、入力引数が Bash に存在するかどうかを確認する
  2. $1 を使用して、入力引数が Bash に存在するかどうかを確認する
入力引数が Bash に存在するかどうかを確認する

Bash スクリプトを作成するとき、正常に実行するためにスクリプト内で使用する引数を取りたい場合があります。 したがって、ユーザーがスクリプトで使用する入力引数の数を確認するスクリプトを作成する必要があります。

これらはすべて、ユーザーがスクリプトまたはコマンドを使用するときに必要な引数を渡さない場合の予期しない動作を防ぎ、必要な数の引数を使用していないことをユーザーに知らせるエラー メッセージを渡すことができます。

この記事では、入力引数が存在するかどうか、または既存の引数の数を確認する方法を示します。

$# を使用して、入力引数が Bash に存在するかどうかを確認する

Bash 内では、特別な変数 $# が入力引数を保持します。 $# を使用すると、Bash スクリプトに渡された入力引数の数を確認できます。

簡単な Bash スクリプトは、引数なしで渡された場合、または 2つの引数で渡された場合に、この $# 変数が保持するものを示します。

#!/bin/bash

echo "The number of input arguments passed to this script: "
echo $#

入力引数なしでスクリプトを実行しましょう。

$ ./script.sh

端末出力を以下に示します。

The number of input arguments passed to this script:
0

では、2つの引数を同じスクリプトに渡しましょう。

$ ./script.sh one two

スクリプトの出力は次のようになります。

The number of input arguments passed to this script:
2

ここで、スクリプト内で $# と、$# がゼロ (入力引数がないことを意味する) に等しいかどうかをチェックする条件文を使用して、true の場合に終了することができます。 $# が 0 より大きい場合、条件は false になり、条件ステートメントの else 部分が実行されます。

#!/bin/bash

if [ $# -eq 0 ]
  then
    echo "No input arguments exist"
    exit 1
else
    echo "The number of input arguments passed:"
    echo $#
fi

以下のコマンドを引数なしで使用してスクリプトを実行しましょう。

$ ./script.sh

コードの出力:

No input arguments exist

ここで、引数を指定して別のスクリプト コマンドを実行してみましょう。

$ ./script.sh one two

条件チェックが false に相当するため、コードの出力は異なります。

The number of input arguments passed:
2

それとは別に、$[number] を使用して入力引数にアクセスする別の特殊変数を使用できます。 これらは、Bash 内で使用できる 位置パラメーター です。

3つの変数を取得することがわかっている場合、またはそれを確認している場合は、以下のコードを使用して 3つの変数にアクセスできます。

#!/bin/bash

echo "The input arguments are:"
echo $1 $2 $3

3つの引数を渡した場合のコードの出力は、次のようになります。

The input arguments are:
one two three

$1 を使用して、入力引数が Bash に存在するかどうかを確認する

前のセクションで説明した位置パラメータを思い出してください。 最初の $1 を使用して、入力引数が渡されたかどうかを確認できます。これは、入力引数がない場合、位置パラメーター $1 内に値が存在できないためです。

したがって、条件式が位置パラメータ $1 内に値があるかどうかをチェックする if-else ステートメントを使用できます。 ただし、値がある場合は、位置パラメーターを使用して、入力引数の数と最初の引数をエコーします。

#!/bin/bash

if [ -z "$1" ]
  then
    echo "Please, pass an argument"
    exit 1
else
    echo "The number of input arguments are"
    echo $#
    echo "The first one is"
    echo $1
fi

引数なしでコードを実行してみましょう:

$ ./script.sh

スクリプトの出力:

Please, pass an argument

それでは、いくつかの引数を指定して実行してみましょう。

$ ./script.sh delft stack blog

コードの出力:

The number of input arguments are
3
The first one is
delft
Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn

関連記事 - Bash Input