shell脚本编程(2)——if选择语句、循环结构、case语句
这一章主要写的是shell的if选择语句、循环语句、case语句以及一些简单的例子,能够快速了解shell中的一些结构的使用(* ^ - ^ *)
文章目录
一、 shell中的if选择语句
1、单分支结构
- 当“条件成立”时执行命令序列 ,否则不执行操作
if单分支案例: 检测/media/cdrom目录,若不存在则创建
[root@svr5 ~]\# vim mountdir.sh
#!/bin/bash
dir="/media/cdrom/"
if [ ! -d $dir ]
then
mkdir -p $dir
fi
[root@svr5 ~]\# chmod +x mountdir.sh //添加可执行权限
2、双分支结构
- 当“条件成立”时执行命令序列1,否则执行命令序列2
if分支结构案例: 检测并判断指定的主机是否可ping通,
ping通显示"Host $1 is up."
不通显示"Host $1 is down."
[root@svr5 ~]\# vim pinghost.sh
#!/bin/bash
ping -c 3 -i 0.2 -W 1 $1 &> /dev/null
if [ $? -eq 0 ] ; then
echo "Host $1 is up."
else
echo "Host $1 is down."
fi
[root@svr5 ~]\# chmod +x pinghost.sh
3、多分支结构
- 相当于if语句嵌套,针对多个条件分别执行不同的操作
if多分支结构案例: 从键盘输入一个论坛积分,判断论坛用户等级
大于等于90 神功绝世
大于等于80,小于90 登峰造极
大于等于70,小于80 炉火纯青
大于等于60,小于70 略有小成
小于60 初学乍练
[root@svr5 ~]\# vim grade.sh
#!/bin/bash
read -p "请输入积分(0-100):" JF
if [ $JF -ge 90 ] ; then
echo "$JF 分,神功绝世"
elif [ $JF -ge 80 ] ; then
echo "$JF 分,登峰造极"
elif [ $JF -ge 70 ] ; then
echo "$JF 分,炉火纯青"
elif [ $JF -ge 60 ] ; then
echo "$JF 分,略有小成"
else
echo "$JF 分,初学乍练"
fi
[root@svr5 ~]\# chmod +x grade.sh
二、 shell中的循环
1、for循环
- 根据变量的不通取值,重复执行命令行序列(有次数限制)
for循环案例: 通过循环批量显示10个数字
[root@svr5 ~]\# vim for03.sh
#!/bin/bash
for i in {1..10}
do
echo "$i"
done
[root@svr5 ~]\# chmod +x for03.sh //给文件加执行权限
[root@svr5 ~]\# ./for03.sh //在当前位置执行文件
2、while循环
- 可以实现无限循环,或者有条件的终止循环
- 只要测试结果正确,循环任务就一直执行
- while:加冒号代表所有都正确,一直执行完(会出现死循环)
while循环案例: 有效循环脚本
[root@svr5 ~]\# vim while02.sh
#!/bin/bash
i=1
while [ $i -le 5 ]
do
echo "$i"
let i++
done
[root@svr5 ~]\# chmod +x while02.sh
[root@svr5 ~]\# ./while02.sh
三、case语句
1、case语法结构及特点
- 检查变量的实际取值
- 功能类似if,不如if强大,但是语句比if精简
- 如果与预设的值相匹配,则执行对应的操作
case语句案例:编写一个Nginx启动脚本、脚本通过位置变量$1读取用户的操作指令,判断是start、stop、restart还是status。
[root@svr5 ~]\# vim case1.sh
case $1 in
kai)
/usr/local/nginx/sbin/nginx ;;
guan)
/usr/local/nginx/sbin/nginx -s stop ;;
cq)
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx ;;
cha)
netstat -ntulp | grep -q :80
[ $? -eq 0 ] && echo "nginx服务已经开启" || echo "nginx服务未开启" ;;
*)
echo "kai|guan|cq|cha"
esac
[root@svr5 ~]\# chmod +x case1.sh
结束啦
这篇的基本介绍就先写到这里,后面会继续更新shell脚本的一些常用的用法以及后面企业中一些实用的shell脚本的运用,感谢你们的浏览,也希望对你们有所帮助,你的点赞是我努力的动力,谢谢你们!