shell脚本编程(2)——if选择语句、循环结构、case语句
这一章主要写的是shell的if选择语句、循环语句、case语句以及一些简单的例子,能够快速了解shell中的一些结构的使用(* ^ – ^ *)
文章目录
- shell脚本编程(2)——if选择语句、循环结构、case语句
- 一、 shell中的if选择语句
- 1、单分支结构
- 2、双分支结构
- 1、for循环
- 2、while循环
- 1、case语法结构及特点
一、 shell中的if选择语句
1、单分支结构
- 当“条件成立”时执行命令序列 ,否则不执行操作
if单分支案例: 检测/media/cdrom目录,若不存在则创建
[root@svr5 ~]\\# vim mountdir.sh#!/bin/bashdir=\"/media/cdrom/\"if [ ! -d $dir ]thenmkdir -p $dirfi[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/bashping -c 3 -i 0.2 -W 1 $1 &> /dev/nullif [ $? -eq 0 ] ; thenecho \"Host $1 is up.\"elseecho \"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/bashread -p \"请输入积分(0-100):\" JFif [ $JF -ge 90 ] ; thenecho \"$JF 分,神功绝世\"elif [ $JF -ge 80 ] ; thenecho \"$JF 分,登峰造极\"elif [ $JF -ge 70 ] ; thenecho \"$JF 分,炉火纯青\"elif [ $JF -ge 60 ] ; thenecho \"$JF 分,略有小成\"elseecho \"$JF 分,初学乍练\"fi[root@svr5 ~]\\# chmod +x grade.sh
二、 shell中的循环
1、for循环
- 根据变量的不通取值,重复执行命令行序列(有次数限制)
for循环案例: 通过循环批量显示10个数字
[root@svr5 ~]\\# vim for03.sh#!/bin/bashfor i in {1..10}doecho \"$i\"done[root@svr5 ~]\\# chmod +x for03.sh //给文件加执行权限[root@svr5 ~]\\# ./for03.sh //在当前位置执行文件
2、while循环
- 可以实现无限循环,或者有条件的终止循环
- 只要测试结果正确,循环任务就一直执行
- while:加冒号代表所有都正确,一直执行完(会出现死循环)
while循环案例: 有效循环脚本
[root@svr5 ~]\\# vim while02.sh#!/bin/bashi=1while [ $i -le 5 ]doecho \"$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.shcase $1 inkai)/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脚本的运用,感谢你们的浏览,也希望对你们有所帮助,你的点赞是我努力的动力,谢谢你们!