ウェブサイト検索

Bash配列が値を含むかどうかを確認する方法


Bashは、システム管理や自動化のための強力なツールセットを提供する広く使用されているUnixシェルです。Bashスクリプトで最も一般的に使用されるプログラミング構造の1つは配列で、これにより単一の変数に複数の値を格納することができます。この記事では、Bash配列に特定の値が含まれているかどうかを確認する方法について説明します。

Bash配列に値が含まれているかを確認する方法

Bashの配列に値が含まれているかどうかを判断するために使用できる3つの異なる方法は次のとおりです:

    • ループを使用して
    • grepコマンドの使用
    • $ {array[@]/pattern/replacement} 構文を使用する

方法1: ループを使用する

Bash配列に値が含まれているかを確認する方法の一つは、forループを使用して配列を反復処理し、各要素を見つけたい値と比較することです。以下はその例です:

#!/bin/bash
cars=("BMW" "VOLVO" "KIA")
car_to_find="KIA"

for car in "${cars[@]}"
do
  if [ "$car" == "$car_to_find" ]
  then
    echo "Found $car!"
    break
  fi
done

ここに車のブランドの配列があり、ブランド「KIA」を見つけたいので、forループを使って配列を繰り返し処理し、各車のブランドを探しているブランドと比較します。一致が見つかった場合、メッセージを表示し、break文を使ってループを終了します。

方法2:grepコマンドを使用する

配列内の値を探すためにgrepコマンドを使用するのは、Bash配列に値があるかどうかを判断するための別の技術です。ここに例があります:

#!/bin/bash

cars=("BMW" "VOLVO" "KIA")
car_to_find="KIA"

if echo "${cars[@]}" | grep -qw "$car_to_find"; then
  echo "Found $car_to_find!"
else
  echo "$car_to_find not found."
fi

ここでは、エコーコマンドを使用して配列を標準出力に印刷し、それをgrepにパイプしています。-qオプションはgrepに静かにしておき、パターンが見つかったかどうかを示すステータスコードのみを返すように指示します。-wオプションはgrepに対してパターンを完全な単語として一致させるように指示します。grepがパターンを見つけると、if文は値が見つかったことを示すメッセージを表示します。

方法3: $ {array[@]/pattern/replacement} 構文を使用する

Bash 配列に値が含まれているかを確認する第三の方法は、$ {array[@]/pattern/replacement} 構文を使用して、見つけたい値を異なる文字列に置き換え、その結果の配列を元の配列と比較することです。以下はその例です:

#!/bin/bash
cars=("BMW" "VOLVO" "KIA")
car_to_find="KIA"
if [[ "${cars[@]/$car_to_find/}" != "${cars[@]}" ]]; then
  echo "Found $car_to_find!"
else
  echo "$car_to_find not found."
fi

ここでは、配列から探している値を削除するために、$ {array[@]/pattern/replacement} 構文を使用します。そして、結果の配列が元の配列と異なっている場合、それは値が見つかったことを意味します。

結論

私たちは、Bash配列が値を含むかどうかを確認する3つの異なる方法について話し合いました。それは、ループを使用する方法、grepコマンドを使用する方法、そして $ {array[@]/pattern/replacement} 構文を使用する方法です。これらの技術を使用することで、Bash配列を効率的に検索し、見つかった値に対して必要な操作を実行することができます。