GNU/Linux >> Linux の 問題 >  >> Linux

Linuxシェルスクリプトで数値と文字列を比較する方法

Linux bashシェルスクリプトに関するこのチュートリアルでは、ifステートメントを使用してシェルスクリプト内の数値、文字列、およびファイルを比較する方法を学習します。スクリプト内の比較は非常に便利です。比較結果の後、スクリプトはコマンドを実行するため、コマンドをどのように活用できるかを知る必要があります。

シェルスクリプトでの比較の構文

if[条件/比較]thenコマンドfi

 if [2 -gt 3] then print "2 is great" else else print "2 is not great" fi 

これは数値比較の単純な例であり、スクリプトでより複雑なステートメントまたは条件を使用できます。それでは、数値比較についてもう少し詳しく学びましょう。

Linuxシェルスクリプトの数値を比較する

これは最も一般的な評価方法の1つです。つまり、2つ以上の数値を比較します。ここで、数値比較を行うためのスクリプトを作成しますが、その前に、数値を比較するために使用されるパラメーターを知る必要があります。以下は、数値比較に使用されるパラメータのリストです

  • num1 -eq num2 1番目の数字が2番目の数字と等しいかどうかを確認します
  • num1 -ge num2 1番目の数値が2番目の数値以上かどうかを確認します
  • num1 -gt num2 1番目の数値が2番目の数値より大きいかどうかを確認します
  • num1 -le num2 1番目の数値が2番目の数値以下かどうかを確認します
  • num1 -lt num2 1番目の数字が2番目の数字よりも小さいかどうかを確認します
  • num1 -ne num2 1番目の数字が2番目の数字と等しくないかどうかを確認します

数値比較に使用されるすべてのパラメーターがわかったので、これらをスクリプトで使用しましょう。

#!/ bin / bash#数値比較を行うスクリプトvar1 =10var2 =20if [$ var2 -gt $ var1] then echo "$ var2 is great than $ var1" fi#2番目の比較If [$ var1 -gt 30] then echo"$varは30より大きい"elseecho"$var1は30未満"fi

これは数値比較を行うプロセスです。次に、文字列比較に移りましょう。

Linuxシェルスクリプトの文字列を比較する

bashスクリプトを作成するときは、2つ以上の文字列を比較する必要がある場合もあり、文字列の比較には少し注意が必要です。文字列の比較を行うために使用されるパラメータは

です。
  • var1 =var2var1が文字列var2と同じかどうかを確認します
  • var1!=var2var1がvar2と同じでないかどうかを確認します
  • var1
  • var1>var2var1がvar2より大きいかどうかを確認します
  • -nvar1var1の長さがゼロより大きいかどうかを確認します
  • -zvar1var1の長さがゼロかどうかを確認します

:-ここで使用されている大なり記号(>)と小なり記号(<)は、 stdinのリダイレクトにも使用されていることに気付いたかもしれません。 またはstdout Linuxでは。これらの記号がスクリプトで使用されている場合、これは問題になる可能性があるため、この問題に対処するために何ができるか。

解決策は簡単です。スクリプトでこれらの記号のいずれかを使用する場合は、エスケープ文字とともに使用する必要があります。つまり、「/>」または「/<」として使用する必要があります。

次に、文字列の比較を行うスクリプトを作成しましょう。

スクリプトでは、最初に文字列の同等性をチェックします。このスクリプトは、ユーザー名と定義された変数が同じであるかどうかをチェックし、それに基づいて出力を提供します。次に、比較よりも大きいか小さいかを実行します。これらの場合、比較すると、最後のアルファベット、つまりzが最も高く、アルファベットaが最も低くなります。また、大文字は小文字よりも少ないと見なされます。

#!/ bin / bash#文字列の同等性を実行するスクリプトcomparationname =linuxtechiif [$ USER =$ name] thenecho"ユーザーが存在します"elseelseecho"ユーザーが見つかりません"3=3=文字列の比較を確認するfi#スクリプトZif [$ var1 \> $ var2] then echo "$ var1 is great" else echo "$ var2 is great" fi#小文字と大文字の比較if [$ var3 \> $ var1] echo "$ var1 is great" fi 

ここで、「 -n」を使用する別のスクリプトを作成します。 」と「-z 」と文字列を使用して、値が保持されているかどうかを確認します

#!/ bin / bash#変数が値を保持しているかどうかを確認するスクリプトvar1 ="" var2 =linuxtechiif [-n $ var1] then echo "string is not empty" else else "echo" string / pre> 

ここでは「-n」パラメータのみを使用しましたが、「 -z」も使用できます 「。唯一の違いは、「-z」では長さがゼロの文字列を検索し、「-n」パラメータではゼロより大きい値を検索することです。

Linuxシェルスクリプトでのファイル比較

これは比較の最も重要な機能である可能性があり、おそらく他のどの比較よりも最もよく使用されます。ファイル比較に使用されるパラメータは次のとおりです

  • -dファイルファイルが存在し、それがディレクトリであるかどうかを確認します
  • -eファイルファイルがシステムに存在するかどうかを確認します
  • -w fileファイルがシステムに存在するかどうか、および書き込み可能かどうかを確認します
  • -rファイルファイルがシステムに存在し、読み取り可能かどうかを確認します
  • -sファイルファイルがシステムに存在し、空ではないかどうかを確認します
  • -fファイルファイルがシステムに存在し、ファイルであるかどうかを確認します
  • -Oファイルファイルがシステムに存在するかどうか、およびファイルが現在のユーザーによって所有されているかどうかを確認します
  • -Gファイルファイルが存在し、デフォルトのグループが現在のユーザーと同じであるかどうかを確認します
  • -xファイルファイルがシステムに存在し、実行可能かどうかを確認します
  • ファイルA-ntファイルBファイルAがファイルBよりも新しいかどうかを確認します
  • ファイルA-otファイルBファイルAがファイルBより古いかどうかを確認します

これがファイル比較を使用したスクリプトです

#!/ bin / bash#ファイルをチェックするスクリプトcomparationdir =/ home / linuxtechiif [-d $ dir] then echo"$dirはディレクトリです" fi 

同様に、スクリプトで他のパラメーターを使用してファイルを比較することもできます。これで、bashスクリプトで数値、文字列、およびファイルの比較を使用する方法に関するチュートリアルが完了しました。覚えておいてください、学ぶための最良の方法はこれらを自分で練習することです。

また読む Linuxシステムでハードリンクとソフト(シンボリックリンク)リンクを作成する方法


Linux
  1. Linuxターミナルとシェルをクリスマス化する方法

  2. Linuxシェルスクリプトで関数を定義して使用する方法

  3. Linuxで環境変数とシェル変数を設定/作成する方法

  1. Bashシェルスクリプトで文字列を比較する方法

  2. Linuxでシェルを変更する方法

  3. Linux シェル スクリプトでグループが存在するかどうかを確認し、存在しない場合は追加する方法

  1. Linuxシェルコマンド/スクリプトをバックグラウンドで実行する方法

  2. Linuxでテキストファイルを比較してマージする方法

  3. Linuxでテキストファイルを比較してマージする方法(パート2)