1. 程式人生 > 實用技巧 >Shell指令碼應用(三)

Shell指令碼應用(三)

Shell指令碼應用

技能展示:
學會使用for.while迴圈語句
學會使用case分支語句

簡介
除了上一章學習的if條件語句之外,作為一種指令碼程式語言,Shell同樣包含迴圈,分支等
其他程式控制結構,從而能夠輕鬆完成更加複雜,強大的功能。
本次將學習for.while.case語言的具體應用。

重 點
for.while迴圈語句
case分支語句

理論講解
使用for迴圈語句
在實際工作中,經常會遇到某項任務需要多次執行的情況,而每次執行時僅僅是處理的對
象不一樣,其他命令相同。例如,根據通訊錄中的姓名列表建立系統賬號,根據伺服器清單
檢查各主機的存活狀態,根據IP地址黑名單設定拒絕訪問的防火牆策略等。

當面對各種列表重複任務時,使用簡單的if語句已經難以滿足要求,而順序編寫全部程式碼更是顯得異常煩瑣,困難重重。本次將要學習的for迴圈語句,可以很好地解決類似問題。
1.for語句的結構
使用for迴圈語句時,需要指定一個變數及可能的取值列表,針對每個不同的取值重複執行
相同的命令序列,直到變數值用完退出迴圈。在這裡."取值列表"稱為for語句的執行條件,其
中包括多個屬性相同的物件,需要預先指定(如通訊錄.IP黑名單)。
for迴圈語句的語法結構如下所示。
在這裡插入圖片描述
上述語句結構中,for語句的操作物件為使用者指定名稱的變數,並通過in關鍵字為該變數預
先設定一個取值列表,多個取值之間以空格進行分隔。位於do~done之間的命令序列稱為循
環體,其中的執行語句需要引用變數以完成相應的任務。
for語句的執行流程;首先將列表中的第一個取值賦給變數,並執行do~done迴圈體中的命令
序列;然後將列表中的第二個取值賦給變數,並執行迴圈體中的命令序列~~依次類推,直到列表中的所有取值用完,最後將跳至done語句,表示結束迴圈,如下圖。
在這裡插入圖片描述
操作
一.for迴圈
1.for迴圈語法結構
for 變數名 in 取值列表
do
命令序列
done
2.使用for迴圈
1)建立取值列表
[[email protected] ~]# vim username.txt
在這裡插入圖片描述
2)編寫for迴圈指令碼
[[email protected]
~]# vim useradd.sh
[[email protected] ~]# cat useradd.sh
在這裡插入圖片描述3)刪除指定使用者
[[email protected] ~]# vim deluser.sh
[[email protected] ~]# cat deluser.sh
在這裡插入圖片描述
3.使用for迴圈測試網路連線性
[[email protected] ~]# vim ./pinghost.sh
[[email protected] ~]# cat ./pinghost.sh
在這裡插入圖片描述
在這裡插入圖片描述
二.while迴圈
1.while迴圈語法結構
while [ 條件 ]
do
命令序列
done
2.建立使用者名稱以stu開頭數字隨機
[[email protected] ~]# vim whileadduser.sh
在這裡插入圖片描述
3.刪除使用者
[[email protected] ~]# vim whiledeluser.sh
[[email protected] ~]# cat whiledeluser.sh
在這裡插入圖片描述
三.$case服務控制
在這裡插入圖片描述
在這裡插入圖片描述

1.case語法結構
case 變數值 in
模式1)
;;
模式2)
;;
*)
預設命令序列
esac
2.編寫控制vsftpd指令碼
[[email protected] ~]# vim vsftpd.sh
[[email protected] ~]# cat whiledeluser.sh
[[email protected] ~]# chmod +x vsftpd.sh
在這裡插入圖片描述
在這裡插入圖片描述
3.for.while.case的區別
1)for
根據列表內容進行迴圈遍歷資料使用
2)while
根據初始化隨機迴圈使用
3)case
寫服務控制指令碼使用

實驗
在這裡插入圖片描述
按照實驗要求建立指令碼getarp
在這裡插入圖片描述

驗證指令碼
在這裡插入圖片描述

在做指令碼scanhost
在這裡插入圖片描述
測試指令碼:
在這裡插入圖片描述
操作完成,拜拜