./build_binaries.sh: line 43: [: ==: unary operator expected
私にはこの行(line 43
)がありますが、これは私bash script
には正しいように見えますが、エラーが発生し続けます。
if [ ${platform} == "macosx" ]; then
エラー:
./foo.sh: line 43: [: ==: unary operator expected
これはOSX上にあります。
./build_binaries.sh: line 43: [: ==: unary operator expected
私にはこの行(line 43
)がありますが、これは私bash script
には正しいように見えますが、エラーが発生し続けます。
if [ ${platform} == "macosx" ]; then
エラー:
./foo.sh: line 43: [: ==: unary operator expected
これはOSX上にあります。
問題は、それ$platform
が空の文字列であるということです。通常の回避策は、引用符で囲むことです。
if [ "${platform}" == "macosx" ]
例:
$ unset x
$ [ $x == 3 ]
-bash: [: ==: unary operator expected
$ [ "$x" == "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行目に表示されているエラーが発生します。