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 15:20
下一篇 2016-08-18 15:27

相關推薦

  • 第三周作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。         使用到的命令:w或who、cut、sort、uniq          &nbsp…

    Linux干貨 2017-02-02
  • Centos 系列bind搭建DNS服務加固

        在centos系列版本上運用bind搭建dns服務教程已經有很多,先感謝前人做出的貢獻,引用兩篇博文,講解的非常詳細。 地址是: 主dns搭建:http://blog.csdn.net/reblue520/article/details/52537014 從dns搭建:http://blog.csdn.net/reblue520/…

    Linux干貨 2017-04-16
  • 8.5_Linux文本處理工具和grep之正則表達式的使用

    Linux文本處理工具使用 文件查看工具的使用 cat 命令的使用  此命令一般用于查看文件內容比較多 NAME        cat – concatenate files and print on the&…

    Linux干貨 2016-08-08
  • 多網卡實驗

    1、虛擬網卡實現一個網卡多個地址     網卡別名多用于虛擬機,可理解為一塊網卡MAC地址對應多個IP地址,這樣比較方便管理,在不需要通過添加網卡的形式就可以使用到新的IP 在此圖可看到     eth1     eth1:100   &n…

    Linux干貨 2016-09-06
  • Linux入門命令(一)

    已經一年沒有在接觸過Linux了,經過一個星期的Linux學習之后,又重新對她產生了興趣,本周學習了一些Linux入門級的命令: (1)     (1)tty 這個命令是查看當前所處于的中終端信息的,同樣也可以使用 who am i ,who以及w來查看終端信息. 終端也還有物理終端、虛擬終端以及偽終端之分,在虛擬機下…

    2017-07-16
  • linux 學習筆記

    第二周

    Linux干貨 2018-03-16
欧美性久久久久