2017-07-18 523 views
0

在下面的示例中,我發現if [ $aaa==x ]條件始終爲真。Shell:爲什麼if條件總是爲true

for aaa in {x,y} 
do 
echo --------- 
echo $aaa; 
if [ $aaa==x ] 
then echo this is x 
elif [ $aaa==y ] 
then echo this is y 
fi 
echo $aaa; 
done; 

也就是說,我總是得到輸出:

--------- 
x 
this is x 
x 
--------- 
y 
this is x 
y 

即使我=取代==,問題依舊。爲什麼? 謝謝大家的幫助!

回答

1

當你這樣做:

if [ $aaa==x ] 

要擴展參數$ AAA,然後連接兩個=和信x,然後測試這是否是一個非空字符串(它始終是)。

if [ "$aaa" = x ] 

做你想要的。測試的每個部分應作爲單獨的參數傳遞,並用空格分隔。

請注意,==不是標準語法,您應該使用=來測試兩個字符串是否相等。

相關問題