文章目录
前言(if语句的三种基本类型)
在简单的Shell脚本程序中,通过正确使用if语句(如果……那么……),能使Shell脚本具有一定的“判断力”,以根据不同的条件来完成不同的管理任务,if语句基本结构分三种类型。
一、单分支的if语句
对于单分支结构,只有在“条件成立”时会执行相应的代码,否则不执行任何操作。
1.1、语法格式
if 条件测试操作
then
命令序列
fi
1.2、单分支的应用举例
例如:
(1)创建一个shell脚本jiaoben.sh。
[root@localhost opt]# touch jiaoben.sh
(2)用ls查看opt目录发现没有任何文件夹。
[root@localhost opt]# ls
jiaoben.sh rh
[root@localhost opt]# vi jiaoben.sh
(3)在jiaoben.sh中写入if语句:如果opt目录下没有aaa文件夹那么就创建aaa文件夹。
#!/bin/bash
if [ ! -e "/opt/aaa/" ]
then
mkdir /opt/aaa
fi
(4)执行脚本,查看opt目录发现aaa文件夹已经创建。
[root@localhost opt]# source jiaoben.sh
[root@localhost opt]# ls
aaa jiaoben.sh rh
[root@localhost opt]#
二、双分支的if语句
对于双分支结构,当“条件不成立时”,会进行else另一种操作。
2.1、 语法格式
if 条件测试操作
then 命令序列1
else 命令序列2
fi
2.2、 双分支的应用举例
例如:
(1)我们在上面的jiaoben.sh脚本中写入if语句:如果opt目录下没有aaa文件夹那么就创建aaa文件夹,如果opt目录下已经有aaa文件那么就创建aaabbb文件夹。
#!/bin/bash
if [ ! -e "/opt/aaa/" ]
then
mkdir /opt/bbb
else
mkdir /opt/aaabbb
fi
(2)先用ls查看opt目录,发现没有任何文件夹,执行jiaoben.sh 脚本,发现会创建aaa文件夹,当aaa文件夹已经存在时,再执行脚本,发现会创建aaabbb文件夹。
[root@localhost opt]# ls
jiaoben.sh rh
[root@localhost opt]# source jiaoben.sh
[root@localhost opt]# ls
aaa jiaoben.sh rh
[root@localhost opt]# source jiaoben.sh
[root@localhost opt]# ls
aaa aaabbb jiaoben.sh rh
[root@localhost opt]#
三、多分支的if语句
对于多分支结构,即在if条件中用elif嵌套多个条件。能够根据多个互斥的条件分别执行不同的操作。
3.1、语法格式
if 条件测试操作1
then 命令序列1
elif 条件测试操作2
then 命令序列2
else
命令序列3
fi
3.2 、 多分支的应用举例
例如:
(1)一个简单的计算器编写
#!/bin/bash
echo "----------------------------------"
aaa=欢迎使用XX的计算器
echo "$aaa"
echo "----------------------------------"
read -p "请输入第一个整数:" bbb
read -p "请输入你需要进行的运算,加法(+),减法(-),乘发(x),除法(/),取余(%):" ccc
read -p "请输入第二个整数: " ddd
if [ $ccc = "+" ]
then
num=`expr $bbb + $ddd`
echo "$bbb+$ddd结果为$num"
elif [ $ccc = "-" ]
then
num=`expr $bbb - $ddd`
echo "$bbb-$ddd结果为$num"
elif [ $ccc = "x" ]
then
num=`expr $bbb \* $ddd`
echo "$bbb x $ddd 结果为$num"
elif [ $ccc = "/" ]
then
num=`expr $bbb / $ddd`
echo "$bbb / ddd结果为$num"
elif [ $ccc = "%" ]
then
num=`expr $bbb % $ddd`
echo "$bbb % $ddd结果为$num"
else
echo "请输入正确的运算"
fi
(2)执行脚本
注意事项
1,在shell中,then和if是分开的语句,如果要在同一行里面输入,则需要用分号将它们隔开。
2,[ ]表示条件测试,注意在“[”的前面和“]”的后面都必须要有空格。
3,如果单纯的使用>或者<号,系统会认为是输出或者输入重定向,虽然有可能结果显示正确,但是其实是错误的,需要在前面加上转意符号“ \ ”进行转意。