• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            linux shell 流程控制(轉(zhuǎn))

            (peakflys注:轉(zhuǎn)載自:http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html)

            linux shell有一套自己的流程控制語句,其中包括條件語句(if),循環(huán)語句(for,while),選擇語句(case)。下面我將通過例子介紹下,各個(gè)語句使用方法。

             

            一、shell條件語句(if用法)

            if語句結(jié)構(gòu)[if/then/elif/else/fi]

             

            if 條件測試語句

            then

            action

            [elif 條件

            action

            else

            action

            ]

            fi

             

            如果對于:條件測試語句不是很清楚,可以參考:linux shell 邏輯運(yùn)算符、邏輯表達(dá)式詳解

            shell命令,可以按照分號分割,也可以按照換行符分割。如果想一行寫入多個(gè)命令,可以通過“';”分割。

            如:

            [chengmo@centos5 ~]$ a=5;if [[ a -gt 4 ]] ;then echo 'ok';fi;                        
            ok

             

            實(shí)例:(test.sh)

            #!/bin/sh

            scores=40;
            if [[ $scores -gt 90 ]]; then
                echo "very good!";
            elif [[ $scores -gt 80 ]]; then
                echo "good!";
            elif [[ $scores -gt 60 ]]; then
                echo "pass!";
            else
                echo "no pass!";
            fi;

             

            image

            條件測試有:[[]],[],test 這幾種,注意:[[]] 與變量之間用空格分開。

             

            二、循環(huán)語句(for,while,until用法):

            • for循環(huán)使用方法(for/do/done)

            語法結(jié)構(gòu):

             1.for … in 語句

            for 變量 in seq字符串

            do

            action

            done

            說明:seq字符串 只要用空格字符分割,每次for…in 讀取時(shí)候,就會按順序?qū)⒆x到值,給前面的變量。

            實(shí)例(testfor.sh):

            #!/bin/sh

            for i in $(seq 10); do
                echo $i;
            done;

            image

            seq 10 產(chǎn)生 1 2 3 。。。。10空格分隔字符串。

            2.for((賦值;條件;運(yùn)算語句))

            for((賦值;條件;運(yùn)算語句))

            do

            action

            done;

            實(shí)例(testfor2.sh):

            #!/bin/sh

            for((i=1;i<=10;i++));do
                echo $i;
            done;

            image

             

             

            • while循環(huán)使用(while/do/done)

            while語句結(jié)構(gòu)

            while 條件語句

            do

            action

            done;

            實(shí)例1:

            #!/bin/sh
            i=10;
            while [[ $i -gt 5 ]];do
                echo $i;
                ((i--));
            done;

            運(yùn)行結(jié)果:========================

            sh testwhile1.sh
            10
            9
            8
            7
            6

            實(shí)例2:(循環(huán)讀取文件內(nèi)容:)

            #!/bin/sh

            while read line;do
                echo $line;
            done < /etc/hosts;

             

            運(yùn)行結(jié)果:===================

            sh testwhile2.sh


            # Do not remove the following line, or various programs
            # that require network functionality will fail.
            127.0.0.1 centos5 localhost.localdomain localhost

            • until循環(huán)語句

            語法結(jié)構(gòu):

            until 條件

            do

            action

            done

            意思是:直到滿足條件,就退出。否則執(zhí)行action.

            實(shí)例(testuntil.sh):

            #!/bin/sh

            a=10;

            until [[ $a -lt 0 ]];do

            echo $a;

            ((a—));

            done;

            結(jié)果:

            sh testuntil.sh

            10
            9
            8
            7
            6
            5
            4
            3
            2
            1
            0

            三、shell選擇語句(case、select用法)

            • case選擇語句使用(case/esac)

            語法結(jié)構(gòu)

            case $arg in  
                pattern | sample) # arg in pattern or sample  
                ;;  
                pattern1) # arg in pattern1  
                ;;  
                *) #default  
                ;;  
            esac 

            說明:pattern1 是正則表達(dá)式,可以用下面字符:

                             *       任意字串
                             ?       任意字元
                             [abc]   a, b, 或c三字元其中之一
                             [a-n]   從a到n的任一字元
                             |       多重選擇

             

            實(shí)例:

            #!/bin/sh 

            case $1 in
            start | begin)
                echo "start something"  
                ;;
            stop | end)
                echo "stop something"  
                ;;
            *)
                echo "Ignorant"  
                ;;
            esac

            運(yùn)行結(jié)果:======================

             

            testcase.sh start
            start something

            • select語句使用方法(產(chǎn)生菜單選擇)

            語法:

            select 變量name  in seq變量

            do

                action

            done

            實(shí)例:

            #!/bin/sh 

            select ch in "begin" "end" "exit"
            do
            case $ch in
            "begin")
                echo "start something"  
                ;;
            "end")
                echo "stop something"  
                ;;
            "exit")
                echo "exit"  
                break;
                ;;
            *)
                echo "Ignorant"  
                ;;
            esac
            done;

            運(yùn)行結(jié)果:

            image

            說明:select是循環(huán)選擇,一般與case語句使用。

             

             

            以上是shell的流程控制語句,條件,循環(huán),選擇。 歡迎討論交流!

            posted on 2015-01-29 20:03 peakflys 閱讀(101) 評論(0)  編輯 收藏 引用


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            導(dǎo)航

            統(tǒng)計(jì)

            公告

            人不淡定的時(shí)候,就愛表現(xiàn)出來,敲代碼如此,偶爾的靈感亦如此……

            常用鏈接

            留言簿(4)

            隨筆分類

            隨筆檔案

            文章檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久亚洲国产精品成人AV秋霞| 国产精品久久久久影院色| 亚洲伊人久久成综合人影院 | 国产成人无码精品久久久久免费 | 狠狠久久亚洲欧美专区| 人妻无码久久精品| 国产精品一区二区久久| 亚洲国产成人精品91久久久 | 亚洲午夜久久久影院伊人| 色综合合久久天天综合绕视看| 亚洲欧洲久久久精品| 亚洲狠狠综合久久| 69久久精品无码一区二区| 久久久久亚洲AV成人网人人网站| 国产激情久久久久影院老熟女| 麻豆亚洲AV永久无码精品久久| 久久久久亚洲AV无码去区首| 久久成人影院精品777| 亚洲AV日韩AV永久无码久久| 一级a性色生活片久久无| 精品久久久久久无码人妻热| 久久久精品一区二区三区| 精品久久久久香蕉网| 伊人久久精品无码av一区| 青青热久久国产久精品 | 影音先锋女人AV鲁色资源网久久| 久久亚洲国产成人影院网站| 国内精品久久久久国产盗摄| 亚洲国产成人久久精品动漫| 色综合久久久久| 97超级碰碰碰碰久久久久| 高清免费久久午夜精品| 精品久久久久久| 国产成人精品久久综合 | 久久天天躁狠狠躁夜夜2020一| 亚洲乱码日产精品a级毛片久久| 久久亚洲精品无码播放| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 欧美伊人久久大香线蕉综合| 久久久久久亚洲精品影院| AV无码久久久久不卡蜜桃|