簡體   English   中英

比較bash腳本中的字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM