50

Bash の 2 つの数値が等しいかどうかを比較しようとしました (等しい場合はメッセージを出力します) が、この単純なプログラムに対して奇妙なエラー メッセージが表示されます。

#!/bin/bash

fun2 (){
    $x = 3
    //#prog.sh: line 4: =: command not found
    if [x == 3]
        then
    //#prog.sh: line 6: [x: command not found
            echo "It's 3!"
    fi
}
fun2

対応するエラーは、それらのエラーの原因となった行の下に表示されます。

4

5 に答える 5

80

それは違いない:

 if [ $x -eq 3 ]; then .....

より読みやすくわかりやすいコードを使用する場合は、次の構文を使用します。

 if test $x -eq 3; then .....

説明:

整数を比較するには、これらの演算子を使用する必要があります (からコピーman test):

   INTEGER1 -eq INTEGER2
          INTEGER1 is equal to INTEGER2

   INTEGER1 -ge INTEGER2
          INTEGER1 is greater than or equal to INTEGER2

   INTEGER1 -gt INTEGER2
          INTEGER1 is greater than INTEGER2

   INTEGER1 -le INTEGER2
          INTEGER1 is less than or equal to INTEGER2

   INTEGER1 -lt INTEGER2
          INTEGER1 is less than INTEGER2

   INTEGER1 -ne INTEGER2
          INTEGER1 is not equal to INTEGER2

演算子 == および != は、文字列比較専用です。

情報: "[" コマンドは、システムの "test" コマンドのエイリアスです。

于 2013-04-07T21:13:03.750 に答える
4

最初のエラー メッセージでは、ドル記号$を削除し、等号の前後にスペースを入れてはいけません=

x=3

2 番目のエラー メッセージについては、$前にスペースとドル記号を挿入し、x後にスペースを挿入します。3

if [ $x -eq 3 ]

loentarが正しく指摘したよう-eqに、それはand どちら=でもないものでなければなりません==

于 2013-04-07T21:09:34.867 に答える
3
  • 式ではスペースが必須である[ ]ため、

    if [ $x == 3 ]; then

  • テストの変数にシジルが必要です[ ]

于 2013-04-07T21:08:11.253 に答える