shell腳本 if語句學習筆記

  if語句的結構分爲三種:
 
1: 單分支的if語句
單分支的if語句是最簡單的選擇結構,這種結構只判斷指定的條件,當“條件成立”時執行相應的操作。否則不做任何操作,語句格式如下:
if   條件測試命令
then
  命令序列
fi
 
  上面語句中,首先通過if判斷條件測試命令的返回值是否爲0(條件成立),如果是,則執行then後面的一條過多條可執行語句,一直到fi 爲止表示結束:如果返回值不爲0(也就是不成立),則直接去執行fi後面的語句;
  
其實腳本是很容易學的,,條件測試 之後當條件成立時就可以執行你自己寫的語句,,語句其實就是一些常用的linux的命令。。。
   例如: 我們想每隔五分鐘監測一次MySQL服務進程的運行狀態,若發現MySQL進程已經終止,則在/var/log/messages 文件中追加寫入日誌信息(包括時間),並重新啓動MySQL服務, 如果開啓則不在任何操作。
  思路:首先先要寫個腳本用於監測。在做個任務計劃,好讓腳本每2五分鐘執行一次。
先寫腳本:
vi  mysql.sh
#!/bin/bash
service mysqld status &> /dev/null             //查看服務的運行狀態並不顯示在屏幕上
if  [ $? -ne 0 ] 
  then
ehco " AT time: `date` : mysql server is down ." >> /var/log/messages   //保存日誌
service mysqld restart                                  //重新啓動系統
fi                                                                //結束
 
不要忘了把腳本增加執行權限  chmod o+x mysql.sh
我們在做一個任務計劃讓系統自動沒五分鐘監測一次
crontab -e
*/5 * * * *  /root/mysql.sh
這個腳本和計劃任務就完成了 就達到了 我們想要的結果。 簡單吧 !
下面我們學習一下雙分支的if語句:
 
2: 雙分支的if語句
   雙分支的if語句使用了兩路命令操作。在條件成立或不成立的時候分別執行不同的命令序列,,格式如下:
if  條件測試命令
 then
    命令序列1
 else
      命令序列2
fi
意思是通過條件測試命令的值爲成立還是不成立,,如果成立就執行then下面的語句,然後跳轉到fi結束,,如果不成立就執行else後面的語句一直到fi結束。
     這個應該也是很好理解的,,就是分成立執行的語句和不成立執行的語句。在系統管理的時候也會經常遇到。。
例如:如果我們系統當前登錄到系統中的用戶數量,並判斷是否超過三個,若是側顯示實際數量並給出警告,,否則列出登錄的用戶賬戶名稱及所在終端。
分析: 首先我們要統計用戶的數量,在和3進行比較,在根據要求來做。
 
vi  yonghu.sh
#!/bin/bash
username= ` who | wc -l`   \\這是定義一個變量 檢查登錄到系統的用戶數量給username
if  [ $username -gt 3 ] ; then
echo "ALert,too many login users ( total: $username)" //如果大於3個用戶側顯示具體幾個用戶
else       //當條件不成立的時候執行下面的語句
echo "login user:"
who | awk `{print $1 ,$2}`    //顯示登錄系統的用戶名和終端
fi
上面的 then可以跟在if後一起寫 用;分開 表示一次執行兩個命令
之後在給腳本一個權限就可以證實是否超過3個用戶還是小於3個用戶。雙分支的if語句有時候還不能滿足管理的要求這時候就出來了多分支的if  語句
3: 多分支的if語句
 if語言能夠嵌套使用,進行多次判斷,(例如判斷某學生的得分是否及格,若及格側再判斷是否高於90分…………等等)格式如下
if  條件測試1
then
命令序列1
elif 條件測試2
then
命令序列1
else
命令序列3
fi  
 
上面的語句只嵌套了一個elif,實際上可以嵌套多個elif語句,使用多分支的if語句結構時,會依次對多個條件進行測試,一旦條件成立時即退出選擇結構,否則將執行相應的命令序列後再跳轉到fi ,結束判斷。。
我們還以mysql服務的進程來進行講解
例如: 檢查MySQL進程是否已經存在,若存在則輸出“MySQLd service is running”
如果不存在 則檢查是否存在 /etc/rc.d/init.d/mysqld 可執行腳本,存在則啓動 MySQLd服務。 如果都不存在 則提示“no mysqld file”.
分析:首先我們要檢查MySQLd的進程是否存在 用 pgrep 檢查  返回值在和0比較
 
vi mysqld.sh
#!/bin/bash
pgrep mysqld &> /dev/null       //檢查進程
if [ $? -et 0 ] :then                       //比較
echo "mysqld service is running"   //如果上面成立則輸出
elif  [ -x "/etc/rc.d/init.d/mysqld" ]; then    //上面的條件不成立在測試
service mysqld start                  // 如果有這個腳本就啓動
else                                         //上面兩個都沒有成立 則執行else後面的語句
echo "no mysqld script file"      
fi
 
 
if  的語句就全都將完了 之後可以根據自己的需求可以編寫一些腳本來完成操作啦!
是不是也很好理解。。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章