亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Linux Shell > 正文

詳解Shell編程之if語句實戰(小結)

2020-07-27 18:49:07
字體:
來源:轉載
供稿:網友

對于if語句,其實很多人都肯定的聽說過,那么if語句到底是什么,簡單的說,就類似于漢語里面的如果----那么,if語句是linux運維人員在實際環境中使用的最頻繁也是最重要的語句?。?!

一、if條件語句

1、單分支語句結構

第一種語法如下:

if <條件表達式>  then  指令 fi 

第二種語法

if <條件表達式>; then  指令 fi 

在以上這兩種方式中我還是喜歡用第一種,這個是看個人習慣的。在上面的兩個語法中<條件表達式>可以是 test [] [[]] (())等條件表達式,甚至可以使用命令作為條件表達式。注意:每個if語句都是以if開頭 fi結束,中間并帶有then;

其實很簡單,舉個例子如下:

if [ -f file ]  then  echo "是一個普通文件"  else  echo "不是一個普通文件"  exit 1 fi 

剖析:如果file是一個普通文件,那么就執行echo "是一個普通文件"  否則 輸出一條"不是一個普通文件" 最后退出腳本

其實以下的這段命令更能清晰的了解if語句如下:

如果 <你不會if語句>  那么  那肯定長的不帥 果如 

2、以上就是單分支的if語句,接下來看看雙分支的if語法結構

if <條件表達式>  then  指令一  else  指令二 fi 

以上就是單分支的if語句結構,那么在舉個例子如下:

if [ -f file ]  then  echo "這是一個普通文件"  else  echo "NONONO" fi 

這個和以上的例子是一樣的。同樣是測試file是不是一個普通文件,如果是,那么就輸出指令1 否則那么就輸出指令2

到這里我們在來一個形象描述

如果 <你不會if語句>  那么   就快點學,快點練  否則   你永遠都不可能學會 果如 

我們發現 單分支和雙分支的區別就在于一個有else 一個沒有。

3、多分支if語句結構

我們在上面說了 單分支和雙分支 這里又有了一個多分支,我們可以理解為雙分支里面包含了單分支,那么多分支里面肯定包含了單分支+雙分支:個人理解,好像有點繞? 先來看看多分支吧 如下:

if 語句多分支結構主體為:如果.....那么....否則如果.....那么.....否則如果.....那么,,,,

例1:

if [ -f file ]  then  echo "yes yes yes" elif [ -z file ]  then  echo "yes yes" else  echo "nonono" fi 

解釋如下圖:


看完圖還是沒理解? 沒有關系 如下:


到這里應該是沒有問題了~~

單分支if條件語句實踐

把下面的測試文件中條件表達式改為if條件語句

[root@shell-yankerp sh]# [ -f file ] && echo "yes" || echo "no" yes 

修改如下:

if [ -f file ]  then  echo "yes"  else  echo "no" fi 

運行結果如下:

[root@shell-yankerp sh]# [ -f file ] && echo "yes" || echo "no" yes [root@shell-yankerp sh]# sh cs.sh yes [root@shell-yankerp sh]# cat cs.sh #!/bin/bash # Maintenance:<ywyankerp@163.com> # BINLOG:www.ywyankai.cn # DATE:03:31:35 CST, Sunday, 02 month, 2018, 04 # Test scripts  if [ -f file ]  then  echo "yes"  else  echo "no" fi [root@shell-yankerp sh]#

到這里if的一些基本語法應該掌握了,那么我們接下來,來點實際的。

實戰1:開發shell腳本檢測Nginx服務是否正常啟動 如果宕機,那么就設置郵箱報警?。。?/strong>

其實此章有很多的案例,但是還是那句話,我還是想用我的思想來編寫整個腳本,這樣能表達出來我的整個過程!

首先我們要知道為什么要寫這個腳本?,我們的目的是要干什么?最后需要實現什么樣的效果?,寫了這個腳本到底能實現什么樣的功能? 我感覺這個是我們首先需要考慮的問題。隨后我們就可以帶著這些問題,去編寫我們的shell腳本

那么我們可以根據以上的需求分為三塊 如:如何查看Nginx服務是否啟動?  我們如何查看Nginx服務宕機時候的一些情況。 最后我們需要知道我們用什么樣的工具來實現這個郵箱報警。

1、如何查看Nginx啟動?

我們可以通過netstat -anput | grep nginx 來查看Nginx是否啟動如下:


首先通過上圖我們得到的信息是:我們可以通過上面那條命令來查看,那么接下來我們肯定是需要寫在腳本中的,通過我們的if條件測試語句來寫,最后我們進行比較,所以這時候我們最好的方法是提取它的行號,如下:


也就是說 使用wc -l這個命令可以知道它的行號,只有一行 所以顯示1,那么我們來關閉Nginx再次查看


當我們關閉Nginx時 它已經沒有80端口以及Nginx服務名的一些信息了,所以顯示0 那么我們現在又能得出一個結論,如果 netstat -anput | grep nginx | wc -l 輸出的為1 那么Nginx是啟動的 輸出的為0 那么Nginx已經停止運行;

到這里我們的兩個信息已經知道了:如何查看Nginx服務是否啟動?  我們如何查看Nginx服務宕機時候的一些情況。

那么就接下來就剩下郵件告警了,我們可以使用sendmail來實現,安裝如下:

1.安裝相關的依賴包

[root@shell-yankerp sh]# yum install perl-Net-SSLeay perl-IO-Socket-SSL -y 

2.解壓并安裝

[root@shell-yankerp ~]# tar zxf sendEmail-v1.56.tar.gz [root@shell-yankerp ~]# cd sendEmail-v1.56/ [root@shell-yankerp sendEmail-v1.56]# cp sendEmail /usr/local/bin/sendEmail 

到這里我們先發個郵件試試,確保郵件可以發送

復制代碼 代碼如下:

[root@shell-yankerp ~]# /usr/local/bin/sendEmail -f yankerpcs@163.com -t ywyankerp@163.com -s smtp.163.com -u "Nginx測試" -o message-content-type=html -o message-charset=utf8 -xu yankerpcs -xp ******* -m "Nginx正在測試" 

這邊我已經收到了郵件報警測試的郵件了

3、接下來就可以開始寫腳本了如下:

#!/bin/bash # Maintenance:<ywyankerp@163.com> # BINLOG:www.ywyankai.cn # DATE:03:31:35 CST, Sunday, 02 month, 2018, 04 # Test scripts  NX=`netstat -anput | grep nginx | wc -l`  if [ "$NX" -eq 0 ]  then   /usr/local/nginx/sbin/nginx fi  if [ "$?" -ne 0 ]  then /usr/local/bin/sendEmail -f yankerpcs@163.com -t ywyankerp@163.com -s smtp.163.com -u "Nginx報警" -o message-content-type=html -o message-charset=utf8 -xu yankerpcs -xp ******* -m "Nginx啟動失敗盡快查 看?。?!" &> /dev/null fi 

在這里我會一條條的解釋:

NX=`netstat -anput | grep nginx | wc -l`  :這就是上面測試的那條命令,如果Nginx宕機就輸出0 正常運行那么就輸出1 來確定Nginx運行狀況賦值給了變量NX

if [ "$NX" -eq 0 ]     //如果NX執行的結果為0  then          //那么  /usr/local/nginx/sbin/nginx  //啟動nginx服務fi

最后結束符fi

if [ "$?" -ne 0 ] then /usr/local/bin/sendEmail -f yankerpcs@163.com -t ywyankerp@163.com -s smtp.163.com -u "Nginx報警" -o message-content-type=html -o message-charset=utf8 -xu yankerpcs -xp ****** -m "Nginx啟動失敗盡快查看?。?!" &> /dev/nullfi

當我們啟動Nginx啟動失敗時 我們在這里使用特殊的狀態變量$? 查看上一條命令是否為0 是0就是成功。解釋:如果啟動Nginx失敗,那么就會執行 /usr/local/bin.....就是這個郵箱報警程序 輸出一條 Nginx啟動失敗盡快查看?。。?/p>

最后的腳本是這樣的 如下:


那么接下來我們執行:

1.首先我們模擬Nginx宕機,隨后運行腳本


在第一條命令我們可以看到nginx沒有啟動 當我們運行腳本它檢測到了Nginx宕機后就會執行啟動操作是以下語句實現的如下:

NX=`netstat -anput | grep nginx | wc -l`  if [ "$NX" -eq 0 ]  then   /usr/local/nginx/sbin/nginx fi 

2、我們嘗試修改Nginx的啟動路徑,故意出現Nginx啟動失敗的情節,來測試郵箱是否能夠正常接收


修改完成后運行此腳本


實現此效果的腳本段如下:

if [ "$?" -ne 0 ]  then /usr/local/bin/sendEmail -f yankerpcs@163.com -t ywyankerp@163.com -s smtp.163.com -u "Nginx報>警" -o message-content-type=html -o message-charset=utf8 -xu yankerpcs -xp ****** -m "Nginx啟動失敗盡>快查看?。?!" &> /dev/null fi 

隨后我們添加計劃任務 每1分鐘執行一次腳本


其實到這里我們的一個實例就結束了,雖然這表面上是一個實例,但是MySQL PHP? SSHD這些各種服務的檢測腳本那么肯定是沒有任何的問題了,包括檢測磁盤空間的占用情況等等,都是可以舉一反三的,在這里我就不在演示了。 

本次就到這里,希望對您有所幫助,再見!小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产欧美精品| 亚洲第一国产精品| 日韩av三级在线观看| 久久精品福利视频| 91九色视频在线| 欧美日韩aaaa| 欧美性猛交xxxx富婆| 亚洲欧美在线播放| 久久99久久亚洲国产| 亚洲视频在线看| 欧美国产日韩中文字幕在线| 91免费看片网站| 日韩在线www| 91日韩在线播放| 91在线观看免费高清| 久久人人爽亚洲精品天堂| 免费91麻豆精品国产自产在线观看| 欧日韩在线观看| 日韩网站免费观看| 欧美激情精品久久久久久黑人| 98午夜经典影视| 国产一区二区在线免费视频| 欧洲中文字幕国产精品| 欧美性感美女h网站在线观看免费| 午夜精品www| 亚洲第一区在线| 2019av中文字幕| 亚洲午夜国产成人av电影男同| 国产欧美精品一区二区| 亚洲欧美视频在线| 中文国产成人精品| 成人免费网站在线看| 日韩小视频在线观看| 欧美激情视频在线免费观看 欧美视频免费一| 国产激情久久久久| 精品调教chinesegay| 日本欧美黄网站| 欧美专区在线播放| 成人免费在线视频网址| 欧美午夜视频一区二区| 色爱av美腿丝袜综合粉嫩av| 欧美日韩国产精品一区二区三区四区| 性金发美女69hd大尺寸| 久久全球大尺度高清视频| 国产偷国产偷亚洲清高网站| 色悠悠久久88| 在线播放国产一区中文字幕剧情欧美| 欧洲成人在线观看| 国精产品一区一区三区有限在线| www.久久草.com| 久久亚洲精品小早川怜子66| 国产精品视频免费在线观看| 中文字幕精品久久久久| 久久国产精品久久久久久久久久| 欧美性猛交丰臀xxxxx网站| 日韩电影大全免费观看2023年上| 粉嫩老牛aⅴ一区二区三区| 这里精品视频免费| 国产成人一区二区在线| 国产日韩换脸av一区在线观看| 亚洲黄色成人网| 欧美韩日一区二区| 少妇高潮久久77777| 国产成人高清激情视频在线观看| 俺也去精品视频在线观看| 在线a欧美视频| 久久久久久久久久久免费| 日韩中文字幕网| 日韩精品高清在线| 精品欧美aⅴ在线网站| 热99精品只有里视频精品| 一区二区三区回区在观看免费视频| 国产91在线播放精品91| 最近2019中文字幕mv免费看| 一区二区三区国产在线观看| 欧美性xxxx18| 久久久女女女女999久久| 亚洲欧美综合图区| 久久久亚洲福利精品午夜| 91免费精品视频| 精品欧美国产一区二区三区| 久久久精品久久| 一区二区三区国产在线观看| 清纯唯美亚洲激情| 亚洲欧美999| 中文字幕免费精品一区| 国产精品丝袜白浆摸在线| 久久99久久亚洲国产| 亚洲一级黄色av| 国产视频综合在线| 色噜噜久久综合伊人一本| 久久久成人精品视频| 日韩欧美在线第一页| 亚洲精品一区二三区不卡| 日韩hd视频在线观看| 日韩电影免费在线观看中文字幕| 在线播放国产精品| 成人精品视频久久久久| 欧美成人精品影院| 中文字幕亚洲情99在线| 欧美国产激情18| 欧美视频国产精品| 精品激情国产视频| 国产精品一区二区三区免费视频| 午夜精品一区二区三区在线播放| 日韩成人在线观看| 亚洲福利视频二区| 国产亚洲精品美女久久久| 久久国产精品亚洲| 国产原创欧美精品| 国产在线一区二区三区| 国产在线拍揄自揄视频不卡99| 国产精品天天狠天天看| 日韩在线中文视频| 精品久久中文字幕| 欧洲亚洲免费在线| 亚洲国产日韩欧美在线99| 97视频免费观看| 中文字幕视频在线免费欧美日韩综合在线看| 57pao成人国产永久免费| 日韩精品免费一线在线观看| 欧美日韩在线视频首页| 国产精品成人va在线观看| 国产视频久久网| 成人免费xxxxx在线观看| 亚洲精品福利资源站| 国产香蕉精品视频一区二区三区| 亚洲国产成人精品久久久国产成人一区| 国产成人精品免费久久久久| 精品久久久香蕉免费精品视频| 日韩资源在线观看| 伊人久久综合97精品| 91国产精品电影| 97国产suv精品一区二区62| 国产欧美一区二区三区久久| 亚洲图片制服诱惑| 国产精品jvid在线观看蜜臀| 欧美极品少妇xxxxⅹ裸体艺术| 日韩最新av在线| 成人妇女淫片aaaa视频| 中文字幕国产精品| 久99九色视频在线观看| 日韩中文字幕在线精品| 国产精品久久久久久久久久久久久| 欧美性xxxxx极品| 亚洲精品免费av| 国产精品久久久久久av福利软件| 成人av番号网| 久久视频在线视频| 亚洲tv在线观看| 精品国产老师黑色丝袜高跟鞋| 色伦专区97中文字幕| 都市激情亚洲色图| 国产99久久久欧美黑人| 国产综合香蕉五月婷在线| 欧美三级免费观看| 91久久久久久久久久久久久| 成人高清视频观看www| 欧美成人性色生活仑片| 日韩精品丝袜在线| 日本精品免费观看| 2024亚洲男人天堂| 久热在线中文字幕色999舞| 91国产精品91|