[英]Shell Scripting: How to do multiple conditions in if else statement
我應該如何用多個條件來表達 if 語句:
if [ <T/F Condition> ] && [ <T/F Condition> ] && [ <T/F Condition> ]
或者
if [ <T/F Condition> && <T/F Condition> && <T/F Condition>]
?
正如“man test”所展示的那樣,“-a”代表“and”。
例如。:
if [ <T/F Condition> -a <T/F Condition> -a <T/F Condition> ]
也要注意間距。
&&
是 shell 運算符,在cmd1 && cmd2
中,它告訴 shell 如果第一個命令成功,則只運行第二個命令。
因此,這有效,並且可以滿足您的要求:
if [ "$x" = a ] && [ "$y" = b ]; then ...
然而,在這:
if [ "$x" = a && "$y" = b ]; then ...
要運行的命令將是[ "$x" = a
and "$y" = b ]
,其中第一個將給出缺少]
參數的錯誤。 (在這里,請記住[
是一個常規命令,類似於echo
左右,它只是有一個有趣的名字。)
此外,您應該避免這種情況:
if [ "$x" = a -a "$y" = b ]; then ...
即使它在一些簡單的情況下也可以在某些 shell 中工作。 當變量包含字符串時,這與解析問題有關!
(否定)或其他作為[
的運算符。 同樣,由於[
是一個常規命令,而不是特殊的 shell 語法,它無法分辨哪個 arguments 來自變量,哪些是硬編碼運算符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.