上篇關于測試語句的使用規則及相關使用方法,如果僅僅孤立使用時很難有其用武之地,當然在shell腳本中其實不可能孤立存在的,隻有與條件語句和控制語句等搭配使用才能使其功能得到最大限度的展現,是以在日常使用中,其功能不容小觑。
一、控制流程
if控制流程可分為但分支if語句和多分支if語句,其使用語和C語言中有很多相似之處,具體用法如下文所述。
1.1但分支if語句結構:
1.2基本文法
<code> </code><code>if</code> <code>條件 或 </code><code>if</code> <code>條件;</code><code>then</code> <code>//</code><code>分号表示兩個指令寫在一行并不互相影響,指令執行順序是從左往右依次執行。</code>
<code> </code><code>then</code> <code>語句</code>
<code> </code><code>語句 </code><code>fi</code>
<code> </code><code>fi</code>
例一.
<code>#!/bin/bash</code>
<code>if</code> <code>[ $USER == root ];</code><code>then</code>
<code>echo</code> <code>"error"</code>
<code>exit</code> <code>127 </code><code>//</code><code>此處的</code><code>exit</code><code>為錯誤輸出提示符</code>
<code>fi</code>
1.3雙分支if結構
1.4雙分支if語句文法結構
<code> </code><code>if</code> <code>條件1 ;</code><code>then</code>
<code> </code><code>指令1</code>
<code> </code><code>else</code>
<code> </code><code>指令2</code>
例二.
<code>ping</code> <code>-c 3 $1 &> </code><code>/dev/null</code>
<code>if</code> <code>[ $? -</code><code>eq</code> <code>0 ];</code><code>then</code>
<code> </code><code>echo</code> <code>"THE HOST $1 is up"</code> <code>//</code><code>該行中的$1為位置參數,具體可見腳本運作執行個體</code>
<code>else</code>
<code> </code><code>echo</code> <code>"THE HOST $1 is down"</code>
<code>[root@node1 ~]</code><code># sh if1.sh 192.168.213.101</code>
<code>THE HOST 192.168.213.101 is up</code>
<code>service $1 status &> </code><code>/dev/null</code>
<code>if</code> <code>[ $? == 0 ];</code><code>then</code>
<code> </code><code>echo</code> <code>"THE $1 is running"</code>
<code> </code><code>else</code>
<code> </code><code>echo</code> <code>"THE $1 is Stop"</code>
<code>[root@node1 ~]</code><code># sh if1.sh network</code>
<code>THE network is running</code>
<code>[root@node1 ~]</code><code># sh if1.sh NetworkManager</code>
<code>THE NetworkManager is running</code>
<code>[root@node1 ~]</code><code># service NetworkManager stop</code>
<code>Stopping NetworkManager daemon: [ OK ]</code>
<code>THE NetworkManager is Stop</code>
<code>[root@node1 ~]</code><code>#</code>
二、多分支流程控制
2.1流程控制原理圖
2.2文法結構
<code>if</code> <code>條件1 ; </code><code>then</code>
<code>指令1</code>
<code>elif</code> <code>條件2 ; </code><code>then</code>
<code> </code><code>指令2:</code>
<code>elif</code> <code>條件3 ; </code><code>then</code>
<code> </code><code>指令3</code>
<code>……………………</code>
<code> </code><code>指令n</code>
例三.
<code>ch=China</code>
<code>J=Japan</code>
<code>read</code> <code>-p </code><code>"請輸入你的國别:"</code> <code>coun </code><code>//read</code><code>實作人機互動指令通常與-p -t 和-n配合使用</code>
<code>if</code> <code>[ $coun == $ch ];</code><code>then</code>
<code> </code><code>echo</code> <code>"您是中國人"</code>
<code> </code><code>elif</code> <code>[ $coun == $J ] ;</code><code>then</code>
<code> </code><code>echo</code> <code>"你是日本人"</code>
<code> </code><code>else</code>
<code> </code><code>echo</code> <code>"您是其他人"</code>
<code>[root@node1 ~]</code><code># ./if1.sh </code>
<code>請輸入你的國别:U.s </code>
<code>您是美國人</code>
<code>請輸入你的國别:China</code>
<code>您是中國人</code>
<code>[root@node1 ~]</code><code># vi if.sh</code>
<code>read</code> <code>-p </code><code>"請輸入要測試的檔案:"</code> <code>file</code> <code>//</code><code>操作者運作腳本時提示輸入的檔案</code>
<code>if</code> <code>[ -d $</code><code>file</code> <code>] ; </code><code>then</code>
<code> </code><code>echo</code> <code>"該檔案是目錄檔案"</code>
<code>elif</code> <code>[ -f $</code><code>file</code> <code>] ; </code><code>then</code>
<code> </code><code>echo</code> <code>"該檔案是普通檔案"</code>
<code>elif</code> <code>[ -r $</code><code>file</code> <code>] ; </code><code>then</code>
<code> </code><code>echo</code> <code>"該檔案是可寫檔案"</code>
<code>else</code>
<code> </code><code>echo</code> <code>"該檔案權限未知"</code>
<code>[root@node1 ~]</code><code># ./if.sh </code>
<code>請輸入要測試的檔案:</code><code>passwd</code>
<code>該檔案是普通檔案</code>
以上列舉出了關于if幾種常用的流程控制語句,動手試試吧!!!
版權聲明:原創作品,如需轉載,請注明出處。否則将追究法律責任
本文轉自 CARYFLASH 51CTO部落格,原文連結:http://blog.51cto.com/maoxiaoxiong/1840661