1. 程式人生 > >shell腳本進階篇(上)

shell腳本進階篇(上)

col oss family 指定 -o for循環 用戶輸入 span 創建用戶

shell腳本是我們學習運維的難點,本篇內容簡單舉例shell腳本的進階上篇,有任何技術上的指導,知識上的不足都歡迎指出點明。

流程控制

過程式編程語言: 順序執行 選擇執行 循環執行


條件選擇if語句

? 單分支

if 判斷條件;then 條件為真的分支代碼 fi

雙分支 if 判斷條件; then 條件為真的分支代碼 else 條件為假的分支代碼 fi

多分支 if 判斷條件1; then 條件為真的分支代碼 elif 判斷條件2; then 條件為真的分支代碼 elif 判斷條件3; then 條件為真的分支代碼 else 以上條件都為假的分支代碼 fi

逐條件進行判斷,第一次遇為“真”條件時,執行其分支,而後結束整個if語句


舉例:

編寫腳本/root/bin/filetype.sh,判斷用戶輸入文件路徑,顯示其文件類型(普通,目錄,鏈接,其它文件類型)

技術分享圖片技術分享圖片

執行結果如下

技術分享圖片技術分享圖片


舉例2

編寫腳本/root/bin/checkint.sh,判斷用戶輸入的參數是否為正整數

技術分享圖片

執行結果如下


技術分享圖片


條件判斷:case語句

case 變量引用 in

PAT1) 分支1 ;;

PAT2) 分支2 ;;

... *) 默認分支 ;;

esac case支持glob風格的通配符: *: 任意長度任意字符 ?: 任意單個字符 []:指定範圍內的任意單個字符 a|b: a或b


舉例

創建一個腳本名為useradd.sh,
	當執行-a選項時,會批量創建用戶mageuser1~mageuser20,要求mageuserX的uid為200x,mageuserxx的uid為20xx,1~8用戶的shell為/sbin/nologin,9~20用戶的uid為/bin/bash。最後這20個用戶的密碼都設置為centos
	當執行-d選項時,批量刪除用戶mageuser1~mageuser20。連同家目錄一同刪除	

技術分享圖片


循環


循環執行 將某代碼段重復運行多次 重復運行多少次: 循環次數事先已知 循環次數事先未知 有進入條件和退出條件

for循環

for 變量名 in 列表;do

循環體

done


舉例

技術分享圖片


舉例

編寫腳本打印矩形

技術分享圖片

執行結果如下:

技術分享圖片


while循環

? while CONDITION; do

循環體

done

? CONDITION:循環控制條件;進入循環之前,先做一次判斷;每一次循環之後會再次做判斷;條件 為“true”,則執行一次循環;直到條件測試狀態為“false”終止循環

? 因此:CONDTION一般應該有循環控制變量;而此變量的值會在循環體不斷地被修正

? 進入條件:CONDITION為true

? 退出條件:CONDITION為false

舉例

技術分享圖片


循環控制shift命令

? shift [n]

? 用於將參量列表 list 左移指定次數,缺省為左移一次。

? 參量列表 list 一旦被移動,最左端的那個參數就從列表中刪除。while 循環 遍歷位置參量列表時,常用到 shift

? ./doit.sh a b c d e f g h

? ./shfit.sh a b c d e f g h

舉例

技術分享圖片

執行結果如下

技術分享圖片


創建無限循環

? while true; do

循環體

? done

? until false; do

循環體

? Done


(shell 腳本進階篇下一周後更新)









shell腳本進階篇(上)