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

一、簡介

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


二、shell循環語句

1.while循環語句

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

語法:

1.png

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

while 循環的執行流程:

首先是對條件進行判斷,如果條件成立,進入循環,執行 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


三、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腳本即可生效。按照這樣的例子,自己可以把一些源碼包的程序製作成一個啓動腳本,趕緊去試一試吧!




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章