Shell流程控制---if判断语句
2021年4月9日
当我们在写程序的时候,时常对上一步执行是否成功如何判断苦恼,当我们学习了if判断语句就可以解决你的苦恼。if判断语句在我们程序中就是用来做判断的,以后不管学习什么语言,以后只要涉及到判断的部分,就可以直接拿if来使用,不同的语言之间的 if 只是语法不同,原理是相同的。
if 语法
语法一
if---then
语句
适用范围:只需要一步判断,条件为真做什么。
if [ condition ];then #如果 条件为真,则
commands #执行commands代码块
fi #结束
实例
#!/bin/bahs
if [ -f /mnt/test ];then
echo "/mnt/test文件已存在。"
fi
语法二
if---then---else
语句
适用范围:两步判断,条件为真做什么,条件为假做什么。
if [ condition ];then #如果 条件为真,则
commands1 #执行commands1代码块
else #否则
commands2 #执行commands2代码块
fi #结束
实例
#!/binbahs
if [ $USER == "root" ];then
echo "管理员,你好!"
else
echo "guest,你好!"
fi
语法三
if---thne---eliif---else
语句
使用范围:多于两个以上的判断结果,也就是两个及以上的判断条件
if [ condition1 ];then #如果 条件1为真,则
commands1 #执行commands1代码块
elif [ condition2 ];then #如果 条件2为真,则
commands2 #执行commands2代码块
... #...
else #否则
commandsX #执行commandsX代码块
fi #结束
实例
#!/bin/bash
read -p "请输入一个整数:" x
if [ $x -gt 0];then
echo "您输入的是一个正整数。"
elif [ $x -eq 0];then
echo "您输入的是0。"
else
echo "您输入的是一个负整数。"
fi
补充
条件符号使用双圆括号,可以在条件中植入数学表达式
双圆括号中的比较运算符,使用的是我们传统的比较运算符 >>=、==、<<=、!=
使用双方括号,可以在条件中使用通配符
作业
- 判断一个机器是否存活(能 ping 通就算存活)
- 判断服务器上的某个服务是否开启
- 判断某年是否为闰年
- 写一个 Nginx 安装脚本,加入判断,当上一步执行成功再执行下一步,否则退出脚本
- 写一个备份脚本,将 A 机器当天修改果的文件=收集到
/cache
目录,打包并发送到B机器/opt/backup
目录下,通过 MD5 值判断 B 机器上的备份的完整性
#nginx安装脚本
[root@linux ~ ]# vim nginx_install.sh
#!/bin/bash
yum -y install wget gcc pcre-devel zlib-devel
wget http://nginx.org/download/nginx-1.18.0.tar.gz
if [ $? -eq 0 ];then
tar -xf nginx-1.18.0.tar.gz
cd nginx-1.18.0
./configure --prefix=/usr/local/nginx
if [ $? -eq 0 ];then
make -j 4
if [ $? -eq 0 ];then
make install
if [ $? -eq 0 ];then
echo "nginx安装成功"
else
echo "nginx安装失败"
fi
else
echo "nginx编译失败"
fi
else
echo "nginx配置失败"
fi
else
echo "nginx下载失败"
fi
[root@linux ~ ]# chmod 700 nginx_install.sh
[root@linux ~ ]# ./nginx_install.sh