SHELL流程控制之循環

當進行腳本編程時,語句執行的流程控制通常有三種:

順序執行

選擇執行

循環執行

 blob.pngblob.pngblob.png

條件選擇if

if語句可以進行嵌套

if 判斷條件;then

         條件為真的分支代碼

elif  判斷條件;then

         條件為真的分支代碼

elif  判斷條件;then

條件為真的分支代碼

         else

         以上情況都不符合的處理代碼

fi

blob.png

逐條件進行判斷,當第一次遇到為條件時,執行其分支,結束整個if語句

        

case 變量引用 in

case1)

    分支

     ;;

case2)

    分支

     ;;

*)

   默認分支

     ;;

esac

blob.png


case支持glob風格的通配符

* 支持長度任意字符

? 任意單個字符

[] 指定范圍內的任意單個字符

a|b  ab

 

循環執行

  將某段代碼重復運行多次

  重復運行多少次:

     循環次數事先已知

     循環次數事先未知

  有進入和退出條件

 

for循環

  for 變量名 in 列表:do

    循環體

done

blob.png

 

列表生成方式

1)         直接給出列表

2)         整數列表

a)         {start,end}

b)         $(seq [start,[step]] end)

3)         返回列表的命令

$(command)

4)         使用glob  *.sh

5)         變量引用

$@  $*

 

 

while循環

    while  condition; do

       循環體

    done

 condition: 循環控制條件,進入循環之前,先做一次判斷;每一次循環之后會再次做判斷,條件為true,則           執行一次循環,直到條件測試狀態為false終止循環,condition一般應該有循環控制變量,而此           變量的值會在循環體不斷地被修正

進入條件: condition true

推出條件: condition false

 blob.png


until循環

until condition ; do

    循環體

done

進入條件: condition false

退出條件: condition true

 blob.png


循環控制語句

continue[N]:提前結束第N層的本輪循環,而直接進入下一輪判斷,最內層為第1

while condition1;do

   cmd1

    …

   If condition2;then

       continue

   fi

   cmdn

   …

done

 

break

break[N]: 提前結束第N層循環,最內層為第1

while condition1;do

   cmd1

   …

   if condition2;then

   break

   fi

   cmdn

   …

done

習題

1、判斷/var/目錄下所有文件的類型

blob.png

blob.png

2、添加10個用戶user1-user10,密碼同用戶名

blob.pngblob.png

blob.png

3、/etc/rc.d/rc3.d目錄下分別有多個以K開頭和以S開頭的文件;分別讀取每個文件,以K開頭的文件輸出為文件加  stop,以S開頭的文件輸出為文件名加start;

 “K34filename stop”

 “S66filename start”

blob.pngblob.png

4、寫一個腳本,提示輸入正整數n的值,計算1+2+3+…n的總和

blob.png

blob.png


5、寫一個腳本,提示請輸入網絡地址,如192.168.0.0,判斷輸入的網段中主機在線狀態

fping -a -g 192.168.0.0/24 2>/dev/null

blob.png

blob.png


6、打印九九乘法表

blob.pngblob.pngblob.png

7、求100以內所有正整數之和

blob.png

8、通過ping命令探測172.16.250.1-254范圍內的所有主機的在線狀態,統計在線主機和離線主機各多少。

blob.pngblob.png

9、利用變量RANDOM生成10個隨機數字,輸出這個10數字,并顯示其中的最大者和最小者

blob.png

10、打印國際象棋棋盤

blob.pngblob.png


blob.pngblob.pngblob.png


原創文章,作者:Stupid_L,如若轉載,請注明出處:http://www.www58058.com/36987

(0)
Stupid_LStupid_L
上一篇 2016-08-18
下一篇 2016-08-18

相關推薦

  • 硬鏈接和軟鏈接的區別

    硬鏈接和軟鏈接在文件系統實現上的區別決定了兩者之間功能上的不同,也就是說硬鏈接和軟鏈在文件系統上兩者實現的方式不同,讓其各自具有不同的功能和特色,也決定了各自的優點和缺點。接下同文件系統上創建硬鏈接和軟鏈接看各自的特點。 一文件系統上創建硬鏈接 下面命令是在文件系統上創建一個硬鏈接: ~]# ln test /testdir/t…

    Linux干貨 2016-10-29
  • 從Linux小白到大牛——與狼共舞的日子7

    馬哥教育網絡班21期+第7周課程練習 1、創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; [root@localhost ~]#&nbsp…

    Linux干貨 2016-11-14
  • N24 第三周 磁盤及文件系統管理

    Linux系統管理          磁盤分區及文件系統管理          RAID          LVM 動態磁盤設備管理          網絡屬性…

    Linux干貨 2016-11-22
  • N22-網絡班 第四周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 cp -r /etc/skel /home/tuser1 chmod -R go= /home/tuser1 2、編輯/etc/group文件,添加組hadoop。…

    Linux干貨 2016-09-19
  • awk用法指北

    awk用法指北 awk是對Linux系統中文本三劍客之一。其功能強大,支持條件判斷、數組、循環,并且內置大量函數,近乎于一門獨立的編程語言。 awk基本語法awk [option] ‘program’ FILE 最常用選項 -F “” 指定字段分隔符 //分隔符為PATTERN-v VAR=value 指定變量…

    Linux干貨 2017-05-21
  • 性能調優概述

    大綱: 一、概述 二、什么是性能調優?(what) 三、為什么需要性能調優?(why) 四、什么時候需要性能調優?(when) 五、什么地方需要性能調優?(where) 六、什么人來進行性能調優?(who) 七、怎么樣進行性能調優?(How) 八、總結 注,硬件配置:CUP Xeon E5620 x 2 8核心, 內存 16G , 硬盤 RAID 10,操作…

    Linux干貨 2015-02-10
欧美性久久久久