我有一個bash腳本調用另一個bash腳本並從第二個腳本獲取字符串返回值。然後我嘗試將該字符串與硬編碼值進行比較,儘管我認爲它是正確的,但它跳過了if語句並轉到其他語句。在Bash腳本中的字符串比較不按預期工作
下面是一些代碼,只是改變變量名:
returnVar=$(/bin/sh ./returnVar.sh ${1})
echo variable from second script = $returnVar
if [ "$returnVar" == "Value-Enabled false" ] ; then
variableName="variable1"
#do other stuff here
elif [ "$returnVar" == "Value-Enabled true" ] ; then
variableName="variable2"
#do other stuff here
else
echo error
exit 1
fi
這staement:
從第二個腳本= 「$ returnVar」
呼應變量似乎返回答案我想要「啓用虛擬值」,但比較結果不起作用。任何人都可以看到我要去哪裏錯,並知道如何提供幫助?
我也嘗試硬編碼returnVar作爲我想要的字符串,然後工作!所以我不知道有什麼問題。
在此先感謝!
嘗試'echo「X $ {returnVar} X」'看看它是否包含空格? – halfbit
使用echo「X $ {returnVar} X」給出輸出 Line1:X Line2:Value-Enabled falseX 這意味着在開始時可能會有一個換行符? 不好意思的格式..不能使它工作正常:( –
如果我是正確的,然後'回聲「X $ {returnVar} X」'會返回兩個X的最小值,之前和之後一個'returnVar'在腳本的echo行),問題是:'returnVar'中是否有前導或尾隨的空白?(如果被X's包圍,它將是可見的)。 – halfbit