我想一些字符在BASH爲什麼我在BASH中的比較工作?
read a
if (($a == "Y"))
then
echo "YES"
elif (($a == "y"))
then
echo "YES"
else
echo "NO"
fi
比較,但由於某種原因,如預期這是行不通的。它總是輸出YES。看着這個超級簡單的腳本,我不明白什麼是錯的。
我想一些字符在BASH爲什麼我在BASH中的比較工作?
read a
if (($a == "Y"))
then
echo "YES"
elif (($a == "y"))
then
echo "YES"
else
echo "NO"
fi
比較,但由於某種原因,如預期這是行不通的。它總是輸出YES。看着這個超級簡單的腳本,我不明白什麼是錯的。
這是由於間距和括號。
read a
if [[ $a == "Y" ]]
then
echo "YES"
elif [[ $a == "y" ]]
then
echo "YES"
else
echo "NO"
fi
您應該檢討bash comparison。您正試圖使用算術擴展結構來進行字符串比較。相反,您應該使用[ exp ]
或[[ exp ]]
結構。
((表達式))用於 '算術評價' 和字符串內(())將被視爲變量名,從而
如果(($一個== 「Y」))
相當於
如果[$ A == $ Y]
(如$ Y是一個字符串,然後bash將試圖展開名字,直到它找到一個數值或未定義的變量)
您需要使用[]或[[]]來比較字符串,如@KRUKUSA所述。
我爲什麼被拒絕投票? – KRUKUSA 2014-10-20 02:05:57
這不是由於間距,這是因爲他們使用括號而不是方括號。 – whereswalden 2014-10-20 02:06:01
@whereswalden也包括括號中的間距。對不起,我忘了指定兩個 – KRUKUSA 2014-10-20 02:06:29