Shell編程入門三:流程式控制制__編程

來源:互聯網
上載者:User

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

public class Test{    public static void main(String[] args){        int a = 10;        if(a > 5){            System.out.println("a 大於 5");        }        else{            //不做任何事        }    }}

在bash裡不能這麼寫,如果 else 分支沒有語句執行,就不要寫這個 else 。 if

語句文法格式如下:

a=10b=20if [ $a == $b ]then    echo "a is same to b."fi
if else

語句文法格式如下:

a=10b=20if [ $a == $b ]then    echo "a is same to b."else    echo "a is not same to b."fi
if else-if else

語句文法格式如下:

a=10b=20if [ $a == $b ]then   echo "a 等於 b"elif [ $a -gt $b ]then   echo "a 大於 b"elif [ $a -lt $b ]then   echo "a 小於 b"else   echo "沒有符合的條件"fi

輸出結果為:a 小於 b。

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

num1=$[2*3]num2=$[1+5]if test $[num1] -eq $[num2]then    echo '兩個數字相等!'else    echo '兩個數字不相等!'fi

輸出結果為:兩個數字不相等。 for 迴圈

順序輸出當前列表中的數字:

for loop in 1 2 3 4 5do    echo "The value is : $loop"done
while 語句
num=1while(( $num<=5 ))do    echo $num    let "num++"done

在bash中使用了 let 命令,它用於執行一個或多個運算式。變數計算中不需要加上 $ 變數。

while 迴圈可用於讀取鍵盤資訊。以下例子,輸入資訊被設定為變數 input ,按 Ctrl + D 結束迴圈。

echo "按下 ctrl + D 退出"echo "請輸入資訊:"while read inputdo    echo "your input is : $input"done
until 迴圈

until 迴圈執行一系列命令直至條件為真時停止。
until 迴圈與 while 迴圈在處理方式上剛好相反。

num=5until(( $num>10 ))do    echo $num    let "num++"done

結果將依次輸出:5 6 7 8 9 10 case

可以用 case 語句匹配一個值與一個模式,如果匹配成功,執行相匹配的命令。

echo '請輸入資訊'read aNumcase $aNum in    1)  echo '你選擇了 1'    ;;    2)  echo '你選擇了 2'    ;;    3)  echo '你選擇了 3'    ;;    "wsz")  echo '你選擇了 wsz'    ;;    *)  echo '你沒有輸入 1 到 4 之間的數字'    ;;esac
case 工作方式如上所示。取值後面必須為單詞 in ,每一模式必須以右括弧結束。取值可以為變數或常數。匹配發現取值符合某一模式後,其間所有命令開始執行直至 ;; 表示 break。 取值將檢測匹配的每一個模式。一旦模式比對,則執行完匹配模式相應命令後不再繼續其他模式。如果無一匹配模式,使用星號 * 捕獲該值,再執行後面的命令。 esac 文法和C family語言差別很大,它需要一個 esac(就是case反過來)作為結束標記,每個 case 分支用) ,用 ;; 表示 break。 跳出迴圈 break

下面的例子中,指令碼進入死迴圈直至使用者輸入數字不是 1 2 3 4 5 中的一個。要跳出這個迴圈,需要使用break命令。

while :do    read aNum    case $aNum in    1|2|3|4|5) echo "your input is $aNum"    ;;    *) echo "game over"        break    ;;    esacdone
continue

continue 命令與 break 命令類似,只有一點差別,它不會跳出所有迴圈,僅僅跳出當前迴圈。

for (( i=0 ; i<10 ; i++ ))do    if [ $i == 3 ]    then        continue    else        echo $i    fidone

上述結果將輸出:0 1 2 4 5 6 7 8 9,不會輸出 3。

參考自:http://www.runoob.com/linux/linux-shell-process-control.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.