2012-10-01 54 views
0

我有一個問題。如果我的if陳述是true,是否跳過elif檢查並直接轉到fi或者它是否仍檢查elif陳述?腳本的linux if/elif/fi命令

例子:

if [ argument1 || argument2 ] 
    then 
      do something. 
elif [ argument2 || argument3 ] 
    then 
      do something. 
elif [ argument2 || argument4 ] 
    then 
      do somthing. 
else 
      do somthing else. 
fi 

我的問題是,我想我elif語句仍然進行檢查,如果我的第一if聲明是真實的。如果我的第一個elif聲明是true ...等等,我還想要檢查我的elif聲明。基本上我希望所有的ifelif聲明都被檢查。

注意:我意識到我可以將所有elif更改爲if聲明,這可能會解決我的問題,因爲所有if聲明將被檢查。但是這個問題也出於好奇和對ifelif陳述的更好的瞭解。

如果您需要更多信息,請讓我知道。

+2

其他的整點如果是這樣。你可以使用if來執行所有真實的命令 – raam86

+0

'[condition ||條件]'無效,您需要使用'[['。 '[[condition ||條件]]',否則,'[條件] || [條件]'。 – jordanm

+0

啊是的!謝謝,我在做腳本測試時意識到了這一點。 :) –

回答

3

如果先前匹配的語句之一匹配,則不檢查elif語句。 elif是「else if」的縮寫。這意味着如果前一個不匹配,你應該檢查這個其他條件。

如您所說,您可以針對您的用例使用多個if語句。

+0

好的感謝信息:) –

1

條件滿足後,if語句終止,其餘elif條件將不會被檢查。

例子:

if echo foo 
then 
    echo "in foo" 
elif echo bar 
then 
    echo "in bar" 
fi 

打印

foo 
in foo 

如果你希望他們所有的檢查,那麼你需要將其拆分成多個if語句如你所說。