文字列の比較 Bash

最終更新日
金曜日 6日 5月 2022

bash 文字列比較

Bashスクリプトを書くとき、2つの文字列を比較して、それらが等しいかどうかを確認する必要があることがよくあります。

Comparison Operators

  • 比較演算子は、値を比較して true または false を返す演算子です。
  • string1 = string2 および string1 == string2 – 等価演算子は、オペランドが等しい場合に true を返します。
  • = 演算子は test [ コマンドと一緒に使用します。
  • パターンマッチングには、== 演算子を [[ コマンドと一緒に使用します。
  • string1 != string2 – オペランドが等しくない場合、不等式演算子は true を返します。
  • string1 =~ regex – 左のオペランドが右側の拡張正規表現と一致する場合、正規表現演算子は true を返します。
  • string1 > string2 – 左のオペランドが右オペランドより大きい場合、辞書式 (アルファベット順) でソートされた場合、大なり演算子は true を返します。
  • string1 < string2 – 右のオペランドが右オペランドより大きい場合、小なり演算子は true を返します (アルファベット順) 順に並べ替えられます。
  • z 文字列 – 文字列の長さがゼロの場合は true
  • n 文字列 – 文字列の長さが 0 以外の場合は true

bash 文字列 比較

2つの文字列が等しいかどうかを確認する

	str1="CodeJagd"
str2="CodeJagd"

if [ $str1 = $str2 ]; then
    echo "Equal"
else
    echo "Not equal"
fi
	

アウトプット

	Equal
	

ユーザーからの入力を取得し、指定された文字列を比較する場合。この例では、[[ コマンドと == 演算子を使用します。

	read -p "Enter first string: " str1
read -p "Enter second string: " str2

if [ $str1 = $str2 ]; then
    echo "Equal"
else
    echo "Not equal"
fi
	

アウトプット

	Enter first string: code
Enter second string: code
Equal
	

bash 比較

論理と && および || を使用することもできます。文字列を比較するには

	read -p "Enter first string: " str1
read -p "Enter second string: " str2

[[ "$str1" == "$str2" ]] && echo "Equal" || echo "Not equal"
	

アウトプット

	Enter first string: code
Enter second string: code
Equal
	

bash strings

文字列に部分文字列が含まれているかどうかを確認する

オプション1: * 記号を使用する

アスタリスク記号 * は、すべての文字に一致することを意味します。

	str1='Hello World'
if [[ $str1 == *"World"* ]]; then
  echo "Present"
else
  echo "Not Present"
fi
	

アウトプット

	Present
	

bash 文字列

オプション 2 : =~ 演算子を使用

  • 正規表現演算子 =~ を使用すると、すべての文字に一致することを意味します。
  • .* は、 個以上の出現箇所の任意の文字に一致します。
	str1='Hello World'
if [[ $str1 =~ .*World.*  ]]; then
  echo "Present"
else
  echo "Not Present"
fi
	

アウトプット

	Present
	

linux 文字 列 検索

文字列が空かどうかを確認する

変数が空の文字列であるかどうかは、-n 演算子と -z 演算子を使用して確認できます。

-z 演算子の使用

	str1='Hello World'
if [[ -z $str1 ]]; then
  echo "Empty"
else
  echo "Not Empty"
fi
	

アウトプット

	Not Empty
	

bash string comparison

-n 演算子の使用

	str1=' '
if [[ -n $str1 ]]; then
  echo "Empty"
else
  echo "Not Empty"
fi
	

アウトプット

	Empty
	

文字列の比較は、Bash スクリプトで最も基本的で頻繁に使用される操作の 1 つです。