3
./build_binaries.sh: line 43: [: ==: unary operator expected

私にはこの行(line 43)がありますが、これは私bash scriptには正しいように見えますが、エラーが発生し続けます。

if [ ${platform} == "macosx" ]; then

エラー:

./foo.sh: line 43: [: ==: unary operator expected

これはOSX上にあります。

4

2 に答える 2

5

問題は、それ$platformが空の文字列であるということです。通常の回避策は、引用符で囲むことです。

if [ "${platform}" == "macosx" ]

例:

$ unset x
$ [ $x == 3 ]
-bash: [: ==: unary operator expected
$ [ "$x" == "3" ]
$
于 2013-02-17T02:48:40.407 に答える
3

1つの可能性は、単一のを使用すること=です。それは古典的な表記法です。一部のシェルは許可==しますが、他のシェルは許可しません。

${platform}また、を二重引用符で囲む必要があります。空の文字列だと思いますが、これは紛らわしいことです。

platform=
if [  $platform  == mac ]; then echo hi; else echo lo; fi
if [ "$platform" == mac ]; then echo hi; else echo lo; fi

これにより、2行目に表示されているエラーが発生します。

于 2013-02-17T02:48:18.807 に答える