shell條件嵌套(if條件陳述式)

來源:互聯網
上載者:User

【注意1】:和Java、PHP等語言不一樣,sh的流程式控制制不可為空白,如:

代碼如下:

<?phpif (isset($_GET["q"])) {    search(q);}else {    //do nothing}?>


 

在sh/bash裡可不能這麼寫,如果else分支沒有語句執行,就不要寫這個else,就像這樣:

if conditionthen    command1    command2    ...    commandNfi

當然,也可以寫成一行(適用於終端命令提示字元),像這樣:

if test $[2*3] -eq $[1+5]; then echo 'The two numbers are equal!'; fi;
也就是說
if conditionthen
也可以寫成
if condition;then

【注意2】: if後的condition一定要是一個條件陳述式,其結果應該是true或false,雖然我們常常將1認為是true、0認為是false,但是這裡的condition運算結果只能是true或false,否則,即使執行結果是1或0,都會認為condition這個條件是具備的,就不走其他分支了。例如:
a=1.2b=2.3c=3.4if [ 1 -eq 0 ]then  echo aaaaaaaaaafi  if [ `echo "$a > $c"|bc` -ne 0 ]  then        echo "max is a"  else        echo "max is c"  fiif [ `echo "$a > $c"|bc` ]; then        echo "max is a"  else        echo "max is c"  fi

上面這個指令碼,執行結果是: max is c
max is a
這裡注意到了
`echo "$a > $c"|bc`  與 <span style="font-family: Arial, Helvetica, sans-serif;">`echo "$a > $c"|bc` -ne 0 執行的結果分別是0和false,但是if會認為結果0是true,false就是false。



1、if格式

if [ condition ]    --注意括弧兩邊有空格,condition 是個條件運算式
then 
        commands
fi

作用:判斷 condition 條件是否成立,如果成立,執行中間的命令 commands,不成立不執行。

    如: if [ $a -gt $b ]
        then 
        echo "a大於b"
            fi

    
    if 可以接 條件運算式 (如 if [ $a -gt $b ]),也可以直接接一個命令(如 if mkdir /abc ) ,這時,會把命令的執行結果作為判斷,如果成功執行,就相當於條件成立,如果執行不成功,就相當於條件不成立。

2、if else格式

if conditionthen    command1    command2    ...    commandNelse    commandfi

3、if else-if else格式

if condition1then    command1elif condition2    command2else    commandNfi


if else語句經常與test命令結合使用,如下所示:

num1=$[2*3]num2=$[1+5]if test $[num1] -eq $[num2]then    echo 'The two numbers are equal!'else    echo 'The two numbers are not equal!'fi

輸出:
The two numbers are equal!


4、if的嵌套

格式一:

  if [ condition ]
  then 
        if [ condition ]
        then 
            commands1
        else
            commands2
         fi    
   fi

格式二:

if [ condition ]
then 
    if [ condition ]
    then 
         commands1
    else    
         commands2
    fi
else
    commands3
fi

5、多條件表示:

    邏輯與
    if [ condition1 -a condition2 ]  
 或   if [ condition1 ] && [ condition2 ]


    邏輯或
    if [ condition1 -o condition2 ]  
 或   if [ condition1 ] || [ condition2 ]

    邏輯非(取反)
    !  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.