我通过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" ];
但这也给出了类似的错误。
有人可以帮我弄清楚出了什么问题吗?
感谢。
答案 0 :(得分:2)
正确的运营商是=
,而不是==
或-eq
:
if [ "$1" = "-abc" ]; then
./test123
else
./test678
fi
答案 1 :(得分:1)
看起来您使用[
的无效实现。它是否是调用shell的内置函数,或/usr/bin/[
。作为一种解决方法,您可以这样做:
if test x"$1" = x"-abc"; then
请注意,使用==
作为test
的运算符是不可移植的。请改用=
。