0

这是我的代码:

    echo $1  $2
    if [ "Release"!="$2" -a "Debug"!="{$2}" ]; then
        echo "error! the arg of -c must be \"Release\" or \"Debug\" !"
        exit 1
    fi
    XCODECONFIG="$2";

当我输入

    ./build.sh a Release

输出是:

    a Release
    error! the arg of -c must be "Release" or "Debug" !

它打印“错误!-c 的参数必须是“发布”或“调试”!“ 为什么不继续 XCODECONFIG="$2"?

4

2 回答 2

2

周围必须有空格!=

[ "Release" != "$2" -a "Debug" != "{$2}" ]

当您编写不带空格的表达式时,它在语法上是正确的,但意味着其他东西。看起来像:

[ STR1 -a STR2 ]

在你的情况下,里面有 != ,但这没有任何意义;无论如何,这只是字符串;每个字符串都被评估为真,并且True -a True也将被评估为真。

于 2012-08-07T07:00:56.217 回答
2

shell脚本中的空格很重要,请尝试:

if [ "Release" != "$2" -a "Debug" != "{$2}" ]; then

否则,您的表达式将被评估为两个都具有真实值的字符串块,因此 if 执行

于 2012-08-07T07:01:05.153 回答