if语句和case语句用法展示

                      if语句和case语句用法展示

                                             作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

 

一.单分支if条件语句
1>.语法格式一
1 if [ 条件判断式 ];then
2   源代码
3 fi

 

2>.语法格式二
1 if [ 条件判断式 ]
2   then
3     源代码
4 fi

 

3>.但分支条件语句需要注意几个点
a>.if语句使用fi结尾,和一般语言使用大括号结尾不同;
b>.[ 条件判断式 ]就是使用test命令判断,所以中括号和条件判断式之间必须有空格;
c>.then后面跟符合条件之后执行的程序,可以放在[]之后,用";"分割。也可以换行写入,就不需要";"啦;

 

4.案例展示
 1 [root@yinzhengjie shell]# more partitions.sh 
 2 #!/bin/bash
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie
 5 #EMAIL:[email protected]
 6 
 7 res=$(df -h | grep "/dev/sda2" | awk '{print $5}'| cut -d "%" -f1)
 8 
 9 if [ $res -ge 20 ]  #为了测试方便,我这里将数据修改,生产环境建议设置成80!
10     then
11         echo "Warning! /dev/sda2 is full!!!"
12 fi
13 [root@yinzhengjie shell]# 

 

二.多分支if条件语句
1.语法格式
1 if [ 条件判断式 ]
2 then
3   条件成立时,执行的源代码。
4 else
5   条件不成立是,执行的另一个程序。
6 fi

 

2.案例展示一(备份服务器的某个目录)
 1 [root@yinzhengjie backup]# more file_backup.sh 
 2 #!/bin/bash
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie
 5 #EMAIL:[email protected]
 6 
 7 #同步系统时间,可以先ping通再选择服务器,1.cn.pool.ntp.org;2.asia.pool.ntp.org;3.asia.pool.ntp.org
 8 ntpdate 2.asia.pool.ntp.org &> /dev/null
 9 
10 FilePath="/etc"
11 BackSave="/tmp/backup"
12 
13 
14 date=`date +%F` #也可以这样玩,date +%y%m%d,看你个人习惯了!
15 
16 size=$(du -sh $FilePath)
17 
18 if [ -d $BackSave ]
19     then
20         echo "Date is:$date" > $BackSave/backup.log
21         echo "Size is:$size" > $BackSave/backup.log
22         cd $BackSave
23         tar -zcf $FilePath_$date.tar.gz $FilePath $BackSave/backup.log &> /dev/null
24         rm -rf $BackSave/backup.log
25     else
26         mkdir $BackSave
27         echo "Date is:$date" > $BackSave/backup.log
28         echo "Size is:$size" > $BackSave/backup.log
29         cd $BackSave
30         tar -zxf $FilePath_$date.tar.gz $FilePath $BackSave/backup.log &> /dev/null
31         rm -rf $BackSave/backup.log
32 fi
33 [root@yinzhengjie backup]# 
 
3.案例展示二(判断某个服务是否启动)
 1 [root@yinzhengjie backup]# more ServerAlarm.sh 
 2 #!/bin/bash
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie
 5 #EMAIL:[email protected]
 6 
 7 Host=192.168.1.110
 8 
 9 res=`rpm -qa | grep nmap`
10 if [ -z $res ]
11     then
12         yum -y install nmap &> /dev/null 
13     else
14         echo “准备开始扫描主机服务!”
15 fi
16 
17 ServiceStatus=$(nmap -sT $Host |grep tcp | grep http|awk '{print $2}') #使用nmap可以准确的判断一台服务器的服务是否正常。
18 
19 if [ "$ServiceStatus" == "open" ]
20     then
21         echo "$(date) httpd is ok !" >> /tmp/HttpdAlarm-acc.log
22     else
23         /etc/rc.d/init.d/httpd restart &>/dev/null  #注意,如果不是你本机的话,不能直接这么干哟,需要先远程上去再执行命令!
24         echo "`date` restart httpd!!" >> /tmp/HttpdAlarm-err.log
25 fi
26 [root@yinzhengjie backup]# 
 
三.多分支if条件语句
1>.语法格式
1 if [ 条件判断式1 ]
2 then
3     当条件判断式1成立时,执行的程序1
4 elif [ 条件判断式2 ]
5 then
6     当条件判断式2成立时,执行程序2
7 else
8     当所有条件都不成立时,最后执行此程序
9 fi

 

2.案例展示
 1 [root@yinzhengjie backup]# more InputFile.sh 
 2 #!/bin/bash
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie
 5 #EMAIL:[email protected]
 6 
 7 read -p "Please input a filename:" file
 8 
 9 if [ -z "$file" ]
10     then
11         echo "Eorr,please input a filename!"
12         exit 100
13 elif [ ! -e "$file" ]
14     then
15         echo "Your input is not a file!"
16 elif [ -f "$file" ]
17     then
18         echo "$file is a regulare file!"
19 elif [ -d "$file" ]
20     then
21         echo "$file is direcory!"
22 else
23         echo "$file is an other file!"
24 fi
25 [root@yinzhengjie backup]# 

 

四.多分支case条件语句
case语句和if...elif...else语句一样都是多分支条件语句,不过if多分支语句不同的是,case语句只能判断一种条件关系,而if语句可以判断多种条件关系。
1.语法格式
 1 case $变量名 in
 2 "值1")
 3     如果变量的值等于1,则执行程序1
 4     ;;
 5 "值2")
 6     如果变量的值等于2,则执行程序2
 7     ;;
 8 "值3")
 9     如果变量的值等于3,则执行程序3
10     ;;
11 *12     如果变量的值都不是以上的值,则执行此程序
13     ;;
14 esac

 

2.案例展示
 1 [root@yinzhengjie backup]# more choose.sh 
 2 #!/bin/bash
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie
 5 #EMAIL:[email protected]
 6 
 7 echo "If you want to beijing,please input [1]"
 8 echo "If you want to shanghai,please input [2]"
 9 echo "If you want to shijiazhuang,please input [3]"
10 echo "If you want to wenzhou,please input [4]"
11 
12 read -t 30 -p "Where do you want to go ? >>> " choose
13 
14 case "$choose" in
15     "1")
16         echo "Go to beijing!"
17         ;;
18     "2")
19         echo "Go to shanghai!"
20         ;;
21     "3")
22         echo "Go to shijiazhuang!"
23         ;;
24     "4")
25         echo "Go to wenzhou!"
26         ;;
27      *)
28         echo "Please enter 1/2/3/4,Thanks!"
29         ;;
30 esac
31 
32 [root@yinzhengjie backup]# 

 

 

你可能感兴趣的:(if语句和case语句用法展示)