Bashスクリプトに「[3:コマンドが見つかりません」と表示されるのはなぜですか?何をすべきか? [コピー]

Bashスクリプトに「[3:コマンドが見つかりません」と表示されるのはなぜですか?何をすべきか? [コピー]

ランダムな引数を受け入れるBashスクリプトをテストしていますが、次のようなものが表示されることを確認しました。

./Var: line 19: [three: command not found

以下は、最小限の作業例です。

#!/bin/bash
$1 $2 $3

echo "The first argument does $1"
if [$1 >= 2]; then
    echo "$1 has 2 words"
else
    echo "$1 has unknown amount of words"
fi
#^First
echo "The second argument does $2"
if [$2 >= 2]; then
    echo "$2 has 2 words"
else
    echo "$2 has unknown amount of words"
fi
#^Second
echo "The third argument does $3"
if [$3 >= 2]; then
    echo "$3 has 2 words"
fi
#^Third

しかし、スクリプトは引き続き実行されます。 「コマンドが見つかりません」というメッセージなしでスクリプトを実行する方法はありますか?それとも、これは私のコードの問題によって引き起こされますか?

答え1

使用するコマンドは[(またはtest)ではなく、[whatever(たとえば)でなければなりません。

[ "$3" -ge 2 ]

代わりにif isを[$3 >= 2]生成します。また:[three: command not found$3three

  • 変数を参照してください。
  • [理解していない>=、理解し、-geその他のオプション。
  • >=とにかくリダイレ​​クトなので、コマンドがあるかどうか[に関係なくコマンドに到達しません[three。これでというファイルができました=

Bashに組み込まれています[。望むよりhelp [help test

関連情報