2 つの文字列が等しいかどうかを比較する方法は次のとおりです。
if [ "$test"x = "test"x ]; それから
ここにはいくつかの重要なポイントがあります。
1 単一の等号を使用します
2 等号の両側にスペースがあることに注意してください。これは Unix シェルの要件です。
3 「test」x の末尾にある x に注目してください。これは仕様です。なぜなら、test"x の末尾に x がある場合、これは仕様によるものです。t e s t " xの末尾のx は意図的に配置されています。testが空の場合、上記の式は x = testx になり、明らかに等しくありませ、場合ん。そして、x がない
二項比較演算子、変数の比較、または数値の比較。数値と文字列の違いに注意してください。
整数比較
-eq は、次のように等しいです。 if [ " a " − eq " a" -eq "「」−e q " b" ]
-ne は等しくありません。例: if [ " a " − ne " a" -ne "「」−n e " b " ]
-gt より大きい (例: if [ " a " − gt " a" -gt ")「」−g t " b" ]
-ge は以上です。例: if [ " a " − ge " a" -ge "「」−g e " b" ]
-lt は次のように小さいです: if [ " a " − lt " a" -lt "「」−l t " b" ]
-le は以下のようになります。 if [ " a " − le " a" -le "「」−l e " b" ]
より大きい (二重括弧が必要)、例: ((" a " > " a" > "「」>" b"))
>= 以上 (二重括弧が必要)、例: (("a " >= " a" >= ")「」>=" b"))
AWK は小規模なデータの比較に使用できます
文字列比較
= は以下と等しい: if [ " a " = " a" = "「」=「 b」]
== は次のように等しい: if [ " a " = = " a" == "「」==" b"]、= と同等
注: [[]] と [] の == 関数の動作は次のように異なります。
1 [[ KaTeX 解析エラー: 'EOF' が予期され、位置 12 で '#' を取得しました: a == z* ]] #̲ は、 a が "z" で始まる場合 (パターン一致) に true になります。
2 [[ KaTeX 解析エラー: 'EOF' が予期され、位置 14 で '#' を取得しました: a == "z*" ]] #̲ a が z* と等しい場合 (文字一致)、結果は true になります
3
4 [ $a == z* ] # ファイルのグロビングと単語の分割が発生します
5 [ " KaTeX 解析エラー: 'EOF' が予期され、位置 14 で '#' が取得されました: a" == "z*" ] #̲ a が z* と等しい場合 (文字一致)、結果は true になります
ファイルのグロビングとは、「*.c」や ~ などのファイルの短縮方法です。
ただし、ファイルのグロビングは厳密な正規表現ではありませんが、ほとんどの場合、構造は似ています。
!= 等しくありません。例: if [ " a " ! = " a" != "「!」=「 b」]
この演算子は、[[]] 構造でパターン マッチングを使用します。
「より大きい」を ASCII アルファベット順に並べたものです。例:
if [[ " a " > " a" > "「」>「 b」]]
if [ " a " " a" \> "「」「 b」]
注意: [] 構造では「>」をエスケープする必要があります。
詳細については、例26-11を参照して、この演算子の適用例を参照してください。
-z 文字列は「null」です。つまり、長さは次のとおりです。 0.
-n 文字列は "null" ではありません
注:
-n を使用して [] 構造内でテストする場合は、変数を引用符で囲むために "" を使用する必要があります。使用するには、"" ではない文字列を使用してください。 -z または""で囲まれていない文字列そのものは、[]構造の中に入れてください。これは一般に機能しますが
、安全ではないため、文字列をテストするには "" を使用することをお勧めします。
元の関連情報: https://blog.csdn.net/weixin_35408656/article/details/113682373