■文字列の比較
任意の2つの文字列を比較する演算子を下表に示す。
演算子 | 比較内容 | 比較後のエラーコード($?) |
---|---|---|
str1 = str2 | str1とstr2は等しい | 0:真(等しい) 1:偽(等しくない) |
str1 == str2 | str1とstr2は等しい | 0:真(等しい) 1:偽(等しくない) |
str1 != str2 | str1とstr2は等しくない(否定) | 0:真(等しくない) 1:偽(等しい) |
-n str1 | str1は空文字ではない | 0:真(空文字ではない) 1:偽(空文字である) |
-z str1 | str1は空文字である | 0:真(空文字である) 1:偽(空文字でない) |
▼サンプルコードと実行例
・等しい:str1 = str2
・サンプルコード
# 初期値をセット
str1_aaa='aaa'
str2_aaa='aaa'
str3_bbb='bbb'
# aaaとaaaが等しいか比較
[ "$str1_aaa" = "$str2_aaa" ];echo $?
# aaaとbbbが等しいか比較
[ "$str1_aaa" = "$str3_bbb" ];echo $?
・実行結果
0
1
エラーコード($?)は、真であれば「0:等しい」、偽であれば「1:等しくない」を返す。
・等しい:str1 == str2
・サンプルコード
# 初期値をセット
str1_aaa='aaa'
str2_aaa='aaa'
str3_bbb='bbb'
# aaaとaaaが等しいか比較
[ "$str1_aaa" == "$str2_aaa" ];echo $?
# aaaとbbbが等しいか比較
[ "$str1_aaa" == "$str3_bbb" ];echo $?
・実行結果
0
1
エラーコード($?)は、真であれば「0:等しい」、偽であれば「1:等しくない」を返す。
・等しくない:str1 != str2
・サンプルコード
# 初期値をセット
str1_aaa='aaa'
str2_aaa='aaa'
str3_bbb='bbb'
# aaaとaaaが等しくないか比較
[ "$str1_aaa" != "$str2_aaa" ];echo $?
# aaaとbbbが等しくないか比較
[ "$str1_aaa" != "$str3_bbb" ];echo $?
・実行結果
1
0
エラーコード($?)は、真であれば「0:等しくない」、偽であれば「1:等しい」を返す。
・空文字ではない:-n str1
・サンプルコード
# 初期値をセット
str1_aaa='aaa'
str2_=''
# 'aaa'は空文字ではないか確認
[ -n "$str1_aaa" ];echo $?
# ''は空文字ではないか確認
[ -n "$str2_" ];echo $?
・実行結果
0
1
エラーコード($?)は、真であれば「0:空文字ではない」、偽であれば「1:空文字である」を返す。
・空文字である:-z str1
・サンプルコード
# 初期値をセット
str1_aaa='aaa'
str2_=''
# 'aaa'は空文字であるか確認
[ -z "$str1_aaa" ];echo $?
# ''は空文字であるか確認
[ -z "$str2_" ];echo $?
・実行結果
1
0
エラーコード($?)は、真であれば「0:空文字である」、偽であれば「1:空文字でない」を返す。
■整数の比較
任意の2つの整数を比較する演算子を下表に示す。
演算子 | 比較内容 | 比較後のエラーコード($?) |
---|---|---|
int1 -eq int2 | int1とint2は等しい | 0:真(等しい) 1:偽(等しくない) |
int1 -ne int2 | int1とint2は等しくない | 0:真(等しくない) 1:偽(等しい) |
int1 -lt int2 | int1はint2より小さい | 0:真(小さい) 1:偽(小さくない) |
int1 -le int2 | int1はint2以下 | 0:真(以下) 1:偽(以下ではない) |
int1 -gt int2 | int1はint2より大きい | 0:真(大きい) 1:偽(大きくない) |
int1 -ge int2 | int1はint2以上 | 0:真(以上) 1:偽(以上ではない) |
▼サンプルコードと実行例
・等しい:int1 -eq int2
・サンプルコード
# 初期値をセット
int1_7=7
int2_7=7
int3_4=4
# 7と7が等しいか比較
[ "$int1_7" -eq "$int2_7" ];echo $?
# 7と4が等しいか比較
[ "$int1_7" -eq "$int3_4" ];echo $?
・実行結果
0
1
エラーコード($?)は、真であれば「0:等しい」、偽であれば「1:等しくない」を返す。
・等しくない:int1 -ne int2
・サンプルコード
# 初期値をセット
int1_7=7
int2_7=7
int3_4=4
# 7と7が等しくないか比較
[ "$int1_7" -ne "$int2_7" ];echo $?
# 7と4が等しくないか比較
[ "$int1_7" -ne "$int3_4" ];echo $?
・実行結果
1
0
エラーコード($?)は、真であれば「0:等しくない」、偽であれば「1:等しい」を返す。
・より小さい:int1 -lt int2
・サンプルコード
# 初期値をセット
int1_7=7
int2_7=7
int3_9=9
# 7は7よりが小さいか比較
[ "$int1_7" -lt "$int2_7" ];echo $?
# 7は9より小さいか比較
[ "$int1_7" -lt "$int3_9" ];echo $?
・実行結果
1
0
エラーコード($?)は、真であれば「0:小さい」、偽であれば「1:小さくない」を返す。
・以下:int1 -le int2
・サンプルコード
# 初期値をセット
int1_7=7
int2_7=7
int3_4=4
# 7は7以下か比較
[ "$int1_7" -le "$int2_7" ];echo $?
# 7は4以下か比較
[ "$int1_7" -le "$int3_4" ];echo $?
・実行結果
0
1
エラーコード($?)は、真であれば「0:以下」、偽であれば「1:以下ではない」を返す。
・より大きい:int1 -gt int2
・サンプルコード
# 初期値をセット
int1_7=7
int2_7=7
int3_4=4
# 7は7より大きか比較
[ "$int1_7" -gt "$int2_7" ];echo $?
# 7は4より大きか比較
[ "$int1_7" -gt "$int3_4" ];echo $?
・実行結果
1
0
エラーコード($?)は、真であれば「0:大きい」、偽であれば「1:大きくはない」を返す。
・以上:int1 -ge int2
・サンプルコード
# 初期値をセット
int1_7=7
int2_7=7
int3_9=9
# 7は7以上か比較
[ "$int1_7" -ge "$int2_7" ];echo $?
# 7は9以上か比較
[ "$int1_7" -ge "$int3_9" ];echo $?
・実行結果
0
1
エラーコード($?)は、真であれば「0:以上」、偽であれば「1:以上ではない」を返す。
コメント