Shell脚本:比较时出错(Linux)

时间:2013-03-19 15:42:13

标签: linux shell makefile

我通过make using:

将参数传递给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" ]; 但这也给出了类似的错误。

有人可以帮我弄清楚出了什么问题吗?

感谢。

2 个答案:

答案 0 :(得分:2)

正确的运营商是=,而不是==-eq

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

答案 1 :(得分:1)

看起来您使用[的无效实现。它是否是调用shell的内置函数,或/usr/bin/[。作为一种解决方法,您可以这样做:

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

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