Bashシェルスクリプトで二つの文字列が等しいかどうかを比較する方法と、特定の文字列が含まれているかどうかを確認する方法を説明します。
1. 文字列同等比較
基本的には ==
演算子で二つの文字列が等しいかどうかを比較することができます。
#!/bin/bash
str1="Hello"
str2="World"
if [ $str1 == $str2 ]
then
echo "Equal"
else
echo "Not Equal"
fi
Output:
$ bash example.sh
Not Equal
ところで、上記のコードは、任意の文字列の長さが0の場合、つまり、Emptyのときにエラーが発生することがあります。
たとえば、次のコードを実行させると、条件の unary operator expected
エラーが発生します。
#!/bin/bash
str1="Hello"
str2=""
if [ $str1 == $str2 ]
then
echo "Equal"
else
echo "Not Equal"
fi
Output:
$ bash example.sh
ex_string_com.sh: line 7: [: Hello: unary operator expected
Not Equal
1.1 安全に文字列を比較する
Emtpy Stringにエラーが発生していない、安全に文字列を比較するには、次のように変数を ""
で包まばされます。その後、一方がEmptyでも [ "$str1" == "" ]
のような形で比較して、問題が発生しません。
#!/bin/bash
str1="Hello"
str2=""
if [ "$str1" == "$str2" ]
then
echo "Equal"
else
echo "Not Equal"
fi
Output:
$ bash example.sh
Not Equal
1.2 変数が特定の文字列であることを確認する
変数が特定の文字列であることを確認するには、次のように変数の代わりに文字列と比較します。
#!/bin/bash
str1="Hello"
if [ "$str1" == "Hello" ]
then
echo "Hello"
else
echo "Not Hello"
fi
Output:
$ bash example.sh
Hello
2. 特定の文字列が含まれていることを確認する
下の二つの方法で文字列に特定の文字列が含まれているかどうかを確認することができます。
[[ "$STRING1" == *STRING2* ]]
[[ "$STRING1" =~ STRING2 ]]
2.1 例1
#!/bin/bash
str='This is the shell script example.'
if [[ "$str" == *shell* ]]; then
echo "It contains 'shell'"
fi
Output:
$ bash example.sh
It contains 'shell'
2.1 例2
#!/bin/bash
str='This is the shell script example.'
if [[ "$str" =~ "shell" ]]; then
echo "It contains 'shell'"
fi
Output:
$ bash example.sh
It contains 'shell'
3. 文字列が Empty であることを確認する
[ -z $STRING ]
で -z
は、文字列の長さが0のときにTrueを返すテスト演算子です。
#!/bin/bash
str1=""
if [ -z $str1 ]
then
echo "Empty string"
else
echo "Not empty string"
fi
Output:
$ bash example.sh
Empty string
References
Related Posts
- Bash Shell - 文字列の出力方法(echo, printf)
- Bash Shell - 数値比較演算子
- Bash Shell - 変数が定義されているかどうかを確認する方法
- Bash Shell - スリープ関数、特定の時間を停止する
- Bash Shell - 文字列 切り出し(substring、split)
- Bash Shell - 日付、時刻を取得する
- Bash Shell - 文字列を連結する方法
- Bash Shell - ファイルの生成と文字列の追加
- Bash Shell - 文字列比較、文字列が含まれているかどうかを確認する
- Bash Shell - 条件文(if-else)
- Bash Shell - 数値演算(プラス、マイナス、乗算、除算)