2

我通过使用 make 将参数传递到 shell 脚本:

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

然后调用 Makefile

$ make smktestrun TESTARGS="-abc"

我在 shell 脚本中的代码是:

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 调用的 shell 的内置函数,还是/usr/bin/[. 作为一种解决方法,您可能可以这样做:

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

请注意,==作为运算符使用 totest是不可移植的。改为使用=

于 2013-03-19T16:24:46.807 回答