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 の引数は "Release" または "Debug" でなければなりません!」と表示されます。XCODECONFIG="$2" に進まないのはなぜですか?

4

2 に答える 2

2

シェルスクリプトではスペースが重要です。試してみてください。

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

それ以外の場合、式は文字列の2つのチャンクに評価され、両方とも真の値を持ちます。したがって、実行された場合

于 2012-08-07T07:01:05.153 に答える
2

の前後にスペースが必要です!=:

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

スペースなしで式を書くと、構文的には正しいですが、別のことを意味します。次のようになります。

[ STR1 -a STR2 ]

あなたの場合、中に != がありますが、それは何の意味もありません。とにかく単なる文字列です。各文字列は true として評価されTrue -a True、true として評価されます。

于 2012-08-07T07:00:56.217 に答える