Linux丨shell語句while和until和case使用

1、簡介web

平時工做中有很多重複的工做,而且沒法統計須要循環該執行多少次,這個時候就須要while或者until循環語句幫助你解決一些繁瑣重複性的工做。而case 語句是匹配一個值或一個模式,若是匹配成功,執行相匹配的命令。通常咱們腳本會用到這個多分支選擇結構。本章節就是介紹以上3個語句的簡單入門用法。shell


2、shell循環語句ide

1.while循環語句函數

最多見的一種知足條件就進入循環的語句, 當條件知足時,while 重複地執行一組語句,直到條件不知足時,才退出 while 循環。命令行

語法:3d

1.png

PS:【判斷條件請查看shell的條件判斷語句相關知識】blog

while 循環的執行流程:ip

首先是對條件進行判斷,若是條件成立,進入循環,執行 while 循環體中的語句(是 do 和 done 之間的語句,這樣就完成了一次循環)源碼

每一次執行到 done 的時候都會從新判斷條件是否知足,若是知足,就進入下一次循環,繼續執行 do 和 done 之間的語句,若是不知足,就結束整個 while 循環,執行 done 後面的其它 Shell 代碼或者直接退出。工作流

例子1: 批量建立用戶

2.png

運行結果:

3.webp.jpg

4.webp.jpg

例子2:計算從1加到1000的和

5.png

執行結果:

6.webp.jpg

能夠看到while語句的應用只是簡單的一個循環語句,文本只是舉一個簡單的例子說明來展現while語句,實現複雜的工做仍是須要熟悉條件判斷語句,這樣才能更好地寫出腳本。

 

2.until循環語句

和while實現一樣的功能,可是流程不同,是一種不知足條件就執行循環的語句,直到條件知足就退出循環。

語法:

7.png

until循環的執行流程:

首先是條件進行判斷,若是條件不知足,進入循環,執行until循環體中的語句(是 do 和 done 之間的語句,多是多個語句,這樣就完成了一次循環)

每一次執行到 done 的時候都會從新判斷條件是否不知足,若是不知足,就進入下一次循環,繼續執行 do 和 done 之間的語句,若是知足,就結束整個until循環,執行 done 後面的其它 Shell 代碼或者直接退出。

例子1: 批量建立用戶(和while對比一下)

8.png

9.webp.jpg

10.webp.jpg


3、shell分支結構語句

1.分支結構:case語句(根據變量的不一樣取值 ,執行不一樣的操做)一般case結構和shell函數一塊兒使用,給源碼服務編寫啓動腳本。case 語句和 if...elif...else 語句,同一種類型都是多分支條件語句。

2.語法:

11.png

3.case 語句的工做流程:

case語句會取出變量中的值(就是你在命令行輸入的值),而後與語句體中每一個分支的值逐一匹配。若是數值匹配,則執行對應分支的程序;若是數值不匹配,則依次進行下一個值的匹配;若是全部的值都不匹配則執行"*)","*"表明全部其餘值中的程序,通常是寫明變量有哪些能夠填寫。

4.注意點

(1)case 語句以"case"開頭,以"esac"結尾。

(2)在每一個分支程序以後要以";;"(雙分號)結尾,表明該程序段結束。

5.例子

(1)Ubuntu系統中iptables是沒有啓動腳本的,咱們能夠經過case語句作一個簡單的開啓關閉腳本。定義Iptables配置存放位置/etc/iptables.rule【我作了一下基本的預設置】

12.webp.jpg

13.png

14.webp.jpg

執行結果以下:

15.webp.jpg

這樣設置了iptables的啓動腳本是否是方便多了,只須要去修改配置文件,重啓iptables腳本便可生效。按照這樣的例子,本身能夠把一些源碼包的程序製做成一個啓動腳本,趕忙去試一試吧!

相關文章
相關標籤/搜索