2

次を使用して、makeを介してシェルスクリプトに引数を渡しています。

smktestrun: smktest
        @../projects/test.sh $(TESTARGS)

次に、Makefile を呼び出します

$ make smktestrun TESTARGS="-abc"

シェルスクリプト内の私のコードは次のとおりです。

if [ "$1" == "-abc" ]; then
    ./test123
else
    ./test678
fi

しかし、次のエラーが表示されます。

+ [ -abc == -abc ]
15:15:08 [: 1: -abc: unexpected operator

そして、コードのelse部分が実行されます。私も試し if [ "$1" -eq "-abc" ]; ましたが、同様のエラーが発生しました。

誰かが何が問題なのかを理解するのを手伝ってもらえますか?

ありがとう。

4

2 に答える 2

2

正しい演算子は=、not==または-eqです。

if [ "$1" = "-abc" ]; then
    ./test123
else
    ./test678
fi
于 2013-03-19T16:29:21.967 に答える
1

の無効な実装を使用しているようです[。make が呼び出すのがシェルに組み込まれているかどうか、または/usr/bin/[. 回避策として、おそらく次のことができます。

if test x"$1" = x"-abc"; then

==演算子 to として使用することtestは移植性がないことに注意してください。=代わりに使用してください。

于 2013-03-19T16:24:46.807 に答える