[英]Comparing strings in bash script
./build_binaries.sh: line 43: [: ==: unary operator expected
我在我的bash script
有这一行( line 43
)看起来对我来说是正确的,但它一直在抛出错误。
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" ]
$
一种可能性是使用单个=
。 这是经典的符号。 有些shell允许==
,但有些则不允许。
另外,您应该将${platform}
括在双引号中; 我认为这是一个空字符串,这是令人困惑的事情。
platform=
if [ $platform == mac ]; then echo hi; else echo lo; fi
if [ "$platform" == mac ]; then echo hi; else echo lo; fi
这会产生您在第二行看到的错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.