在bash程式設計中,條件測試常用的文法形式如下表:
說明⚠️:
文法1中的test指令和文法2中的[]是等價的。
文法3中的[[]]雙中括号為擴充的test指令。
文法4中的(())常用于計算。
在雙中括号[[]]中可以使用通配符等進行模式比對,這是其差別于其他幾種文法格式的地方。
&&、||、>、<等操作符可以應用于雙中括号{[[]]中,但不能應用于單中括号[]中,在[]中一般用-a、-o、-gt(用于整數)、-lt(用于整數)代替上述操作符。
對于整數的關系運算,也可以是使用shell的算術符(())。
test文法格式:test<測試表達式>
test指令若執行成功(為真),則執行 && 後面的指令,反之執行 || 後面的指令。
文法格式:[ 條件測試表達式 ] ==>中括号兩端要有空格
測試file檔案是否存在,代碼如下:
文法格式:[[ 條件測試表達式 ]] ==>雙中括号裡的兩端也要有空格
常用的檔案測試操作符:
用 [] 測試變量時,如果被測試的變量不加雙引号,那麼測試結果可能會是不正确的,如下:
如果是檔案實體路徑,那麼加引号與不加引号的結果是一樣的:
以下寫法适用于所有的條件測試表達式,是工作中比較常用的替代if語句的方法。
當條件1成立時,同時執行指令1、指令2、指令3,如下:
上面的判斷,相當于下面的if語句的效果,如下:
字元串測試操作符,如下:
整數二進制比較操作符使用參考,如下:
針對上述符号的特殊說明⚠️:
“=”和“!=”也可以在[ ]中作比較使用,但在[ ] 中使用包含“>”和“<”的符号時,需要轉義,有時不轉義,雖然文法不會報錯,但是結果可能不對。
也可以在[[]]中使用包含“-gt”和“lt”的符号,但是不建議這樣使用。
比較符号兩端也要有空格。
邏輯操作符介紹如下:
對于上述操作符,說明⚠️如下幾點:
“&&”和“||”邏輯操作符号可用于[[]]和(())中,也可以在外部連接配接多個[]
在[]和[[]]的兩端,必須要有空格,但是對于(())不需要
配置下系統mail,/etc/mail.rc,如下形式:
首先建立函數庫腳本:
賦予函數庫檔案的執行權限:
開發執行腳本以調用上述函數:
執行函數:
常被應用于實作系統服務啟動腳本等企業應用場景中
中文形象表述:
case 條件語句的執行流程邏輯圖:
現在好多企業喜歡使用svn,随着公司業務和人員的增加,運維人員需要對公司的svn平台有個比較直覺的認識,如人員的增删,人員查詢等。
下面的代碼的作用是:一鍵添加、查找和查找人員資訊
shell腳本語言的循環語句常見的有while、until、for 和 select 循環語句。
基本文法:
while循環語句會對緊跟在while指令後的條件表達式進行判斷,如果該條件表達式成立,則執行while循環體裡的指令或語句(即文法中do和done之間的指令),
每一次執行到done時就會重新判斷while條件表達式是否成立,直到條件表達式不成立時才會跳出while循環體。
如果一開始條件表達式就不成立,那麼程式就不會進入循環體中執行指令。
可用手機充值形象說明:
while循環執行流程對應的邏輯圖:
until表達式是在條件表達式不成立時,進入循環執行指令,條件表達式成立時,終止循環。
until應用場景很罕見,了解即可。
shell中兩個休息指令:
讓程序在背景可靠運作的幾種方法
使用while守護程序的方式監控網站,每隔10秒确定一次網站是否正常
喜歡讀技術書籍,喜歡做讀書筆記,以上為本人在讀《跟老男孩學linux運維之shell程式設計實戰》這本書時的筆記,如有任何版權問題,請聯系留言。