您的位置:首页 > 运维架构 > Shell

shell脚本中if流程控制语句的应用

2016-08-20 01:42 876 查看
上篇关于测试语句的使用规则及相关使用方法,如果仅仅孤立使用时很难有其用武之地,当然在shell脚本中其实不可能孤立存在的,只有与条件语句和控制语句等搭配使用才能使其功能得到最大限度的体现,因此在日常使用中,其功能不容小觑。
一、控制流程
if控制流程可分为但分支if语句和多分支if语句,其使用语和C语言中有很多相似之处,具体用法如下文所述。

1.1但分支if语句结构:




1.2基本语法

if 条件        或    if 条件;then   //分号表示两个命令写在一行并不相互影响,命令执行顺序是从左往右依次执行。
then                 语句
语句                 fi
fi
例一.
#!/bin/bash
if [ $USER == root ];then
echo "error"
exit 127                        //此处的exit为错误输出提示符
fi
1.3双分支if结构




1.4双分支if语句语法结构

if 条件1 ;then
命令1
else
命令2
fi
例二.

#!/bin/bash
ping -c 3 $1 &> /dev/null
if [ $? -eq 0 ];then
echo "THE HOST $1 is up"                  //该行中的$1为位置参数,具体可见脚本运行实例
else
echo "THE HOST $1 is down"
fi
[root@node1 ~]# sh if1.sh 192.168.213.101
THE HOST 192.168.213.101 is up
#!/bin/bash
service $1 status &> /dev/null
if [ $? == 0 ];then
echo "THE $1 is running"
else
echo "THE $1 is Stop"
fi
[root@node1 ~]# sh if1.sh network
THE network is running
[root@node1 ~]# sh if1.sh NetworkManager
THE NetworkManager is running
[root@node1 ~]# service NetworkManager stop
Stopping NetworkManager daemon: [  OK  ]
[root@node1 ~]# sh if1.sh NetworkManager
THE NetworkManager is Stop
[root@node1 ~]#
二、多分支流程控制

2.1流程控制原理图




2.2语法结构
if  条件1 ; then
命令1
elif  条件2 ; then
命令2:
elif  条件3 ; then
命令3
……………………
else
命令n
fi
例三.
#!/bin/bash
ch=China
J=Japan
U=u.s
read -p "请输入你的国别:" coun            //read实现人机交互指令通常与-p -t 和-n配合使用
if [ $coun == $ch ];then
echo "您是中国人"
elif [ $coun == $J ] ;then
echo "你是日本人"
else
echo "您是美国人"
fi
[root@node1 ~]# ./if1.sh
请输入你的国别:U.s
您是美国人
[root@node1 ~]# ./if1.sh
请输入你的国别:China
您是中国人
[root@node1 ~]#
[root@node1 ~]# vi if.sh
#!/bin/bash
read -p "请输入要测试的文件:" file     //操作者运行脚本时提示输入的文件
if [ -d $file ] ; then
echo "该文件是目录文件"
elif [ -f $file ] ; then
echo "该文件是普通文件"
elif [ -r $file ] ; then
echo "该文件是可写文件"
else
echo "该文件权限未知"
fi
[root@node1 ~]# ./if.sh
请输入要测试的文件:passwd
该文件是普通文件
以上列举出了关于if几种常用的流程控制语句,动手试试吧!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息