上篇关于测试语句的使用规则及相关使用方法,如果仅仅孤立使用时很难有其用武之地,当然在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