天天看點

老男孩shell實戰讀書筆記 (6-10章節)老男孩shell教程 (6-10章節)

在bash程式設計中,條件測試常用的文法形式如下表:

老男孩shell實戰讀書筆記 (6-10章節)老男孩shell教程 (6-10章節)

說明⚠️:

文法1中的test指令和文法2中的[]是等價的。

文法3中的[[]]雙中括号為擴充的test指令。

文法4中的(())常用于計算。

在雙中括号[[]]中可以使用通配符等進行模式比對,這是其差別于其他幾種文法格式的地方。

&&、||、>、<等操作符可以應用于雙中括号{[[]]中,但不能應用于單中括号[]中,在[]中一般用-a、-o、-gt(用于整數)、-lt(用于整數)代替上述操作符。

對于整數的關系運算,也可以是使用shell的算術符(())。

test文法格式:test<測試表達式>

test指令若執行成功(為真),則執行 && 後面的指令,反之執行 || 後面的指令。

文法格式:[ 條件測試表達式 ] ==>中括号兩端要有空格

測試file檔案是否存在,代碼如下:

文法格式:[[ 條件測試表達式 ]] ==>雙中括号裡的兩端也要有空格

常用的檔案測試操作符:

老男孩shell實戰讀書筆記 (6-10章節)老男孩shell教程 (6-10章節)

用 [] 測試變量時,如果被測試的變量不加雙引号,那麼測試結果可能會是不正确的,如下:

如果是檔案實體路徑,那麼加引号與不加引号的結果是一樣的:

以下寫法适用于所有的條件測試表達式,是工作中比較常用的替代if語句的方法。

當條件1成立時,同時執行指令1、指令2、指令3,如下:

老男孩shell實戰讀書筆記 (6-10章節)老男孩shell教程 (6-10章節)

上面的判斷,相當于下面的if語句的效果,如下:

老男孩shell實戰讀書筆記 (6-10章節)老男孩shell教程 (6-10章節)

字元串測試操作符,如下:

老男孩shell實戰讀書筆記 (6-10章節)老男孩shell教程 (6-10章節)

整數二進制比較操作符使用參考,如下:

老男孩shell實戰讀書筆記 (6-10章節)老男孩shell教程 (6-10章節)

針對上述符号的特殊說明⚠️:

“=”和“!=”也可以在[ ]中作比較使用,但在[ ] 中使用包含“>”和“<”的符号時,需要轉義,有時不轉義,雖然文法不會報錯,但是結果可能不對。

也可以在[[]]中使用包含“-gt”和“lt”的符号,但是不建議這樣使用。

比較符号兩端也要有空格。

邏輯操作符介紹如下:

老男孩shell實戰讀書筆記 (6-10章節)老男孩shell教程 (6-10章節)

對于上述操作符,說明⚠️如下幾點:

“&&”和“||”邏輯操作符号可用于[[]]和(())中,也可以在外部連接配接多個[]

在[]和[[]]的兩端,必須要有空格,但是對于(())不需要

老男孩shell實戰讀書筆記 (6-10章節)老男孩shell教程 (6-10章節)

配置下系統mail,/etc/mail.rc,如下形式:

老男孩shell實戰讀書筆記 (6-10章節)老男孩shell教程 (6-10章節)
老男孩shell實戰讀書筆記 (6-10章節)老男孩shell教程 (6-10章節)

首先建立函數庫腳本:

賦予函數庫檔案的執行權限:

開發執行腳本以調用上述函數:

執行函數:

常被應用于實作系統服務啟動腳本等企業應用場景中

老男孩shell實戰讀書筆記 (6-10章節)老男孩shell教程 (6-10章節)

中文形象表述:

老男孩shell實戰讀書筆記 (6-10章節)老男孩shell教程 (6-10章節)

case 條件語句的執行流程邏輯圖:

老男孩shell實戰讀書筆記 (6-10章節)老男孩shell教程 (6-10章節)

現在好多企業喜歡使用svn,随着公司業務和人員的增加,運維人員需要對公司的svn平台有個比較直覺的認識,如人員的增删,人員查詢等。

下面的代碼的作用是:一鍵添加、查找和查找人員資訊

shell腳本語言的循環語句常見的有while、until、for 和 select 循環語句。

基本文法:

while循環語句會對緊跟在while指令後的條件表達式進行判斷,如果該條件表達式成立,則執行while循環體裡的指令或語句(即文法中do和done之間的指令),

每一次執行到done時就會重新判斷while條件表達式是否成立,直到條件表達式不成立時才會跳出while循環體。

如果一開始條件表達式就不成立,那麼程式就不會進入循環體中執行指令。

可用手機充值形象說明:

老男孩shell實戰讀書筆記 (6-10章節)老男孩shell教程 (6-10章節)

while循環執行流程對應的邏輯圖:

老男孩shell實戰讀書筆記 (6-10章節)老男孩shell教程 (6-10章節)

until表達式是在條件表達式不成立時,進入循環執行指令,條件表達式成立時,終止循環。

until應用場景很罕見,了解即可。

shell中兩個休息指令:

讓程序在背景可靠運作的幾種方法

老男孩shell實戰讀書筆記 (6-10章節)老男孩shell教程 (6-10章節)

使用while守護程序的方式監控網站,每隔10秒确定一次網站是否正常

喜歡讀技術書籍,喜歡做讀書筆記,以上為本人在讀《跟老男孩學linux運維之shell程式設計實戰》這本書時的筆記,如有任何版權問題,請聯系留言。

繼續閱讀