2013-02-17 107 views
2
./build_binaries.sh: line 43: [: ==: unary operator expected 

比較字符串我有我的bash script看起來正確的我這一行(line 43),但它不斷拋出的錯誤。在bash腳本

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

錯誤:

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

這是OSX。

回答

4

問題是$platform是一個空字符串。通常的解決方法是把它放在引號:

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

例子:

$ unset x 
$ [ $x == 3 ] 
-bash: [: ==: unary operator expected 
$ [ "$x" == "3" ] 
$ 
2

一種可能性是使用單個=。這是經典的符號。一些炮彈允許==,但其他炮彈不允許。

另外,你應該用0123引號括起${platform};我認爲這是一個空的字符串,這是令人困惑的事情。

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

這會產生您在第二行看到的錯誤。