首页 电脑 电脑学堂 查看内容

shell脚本 if语句学习笔记

2013-10-23 15:16 583 0

摘要:  if语句的结构分为三种: 1: 单分支的if语句单分支的if语句是最简单的选择结构,这种结构只判断指定的条件,当“条件成立”时执行相应的操作。否则不做任何操作,语句格式如下:if...
关键词: nbsp 语句 条件 命令 mysqld 分支 如果 脚本 序列 面的

 if语句的结构分为三种: 1: 单分支的if语句单分支的if语句是最简单的选择结构,这种结构只判断指定的条件,当“条件成立”时执行相应的操作。否则不做任何操作,语句格式如下:if   条件测试命令then  命令序列fi   上面语句中,首先通过if判断条件测试命令的返回值是否为0(条件成立),如果是,则执行then后面的一条过多条可执行语句,一直到fi 为止表示结束:如果返回值不为0(也就是不成立),则直接去执行fi后面的语句;  其实脚本是很容易学的,,条件测试 之后当条件成立时就可以执行你自己写的语句,,语句其实就是一些常用的linux的命令。。。   例如: 我们想每隔五分钟监测一次MySQL服务进程的运行状态,若发现MySQL进程已经终止,则在/var/log/messages 文件中追加写入日志信息(包括时间),并重新启动MySQL服务, 如果开启则不在任何操作。  思路:首先先要写个脚本用于监测。在做个任务计划,好让脚本每2五分钟执行一次。先写脚本:vi  mysql.sh#!/bin/bashservice mysqld status &> /dev/null             //查看服务的运行状态并不显示在屏幕上if  [ $? -ne 0 ]   thenehco " AT time: `date` : mysql server is down ." >> /var/log/messages   //保存日志service mysqld restart                                  //重新启动系统fi                                                                //结束 不要忘了把脚本增加执行权限  chmod o+x mysql.sh我们在做一个任务计划让系统自动没五分钟监测一次crontab -e*/5 * * * *  /root/mysql.sh这个脚本和计划任务就完成了 就达到了 我们想要的结果。 简单吧 !下面我们学习一下双分支的if语句: 2: 双分支的if语句   双分支的if语句使用了两路命令操作。在条件成立或不成立的时候分别执行不同的命令序列,,格式如下:if  条件测试命令 then    命令序列1 else      命令序列2fi意思是通过条件测试命令的值为成立还是不成立,,如果成立就执行then下面的语句,然后跳转到fi结束,,如果不成立就执行else后面的语句一直到fi结束。     这个应该也是很好理解的,,就是分成立执行的语句和不成立执行的语句。在系统管理的时候也会经常遇到。。例如:如果我们系统当前登录到系统中的用户数量,并判断是否超过三个,若是侧显示实际数量并给出警告,,否则列出登录的用户账户名称及所在终端。分析: 首先我们要统计用户的数量,在和3进行比较,在根据要求来做。 vi  yonghu.sh#!/bin/bashusername= ` who | wc -l`   \\这是定义一个变量 检查登录到系统的用户数量给usernameif  [ $username -gt 3 ] ; thenecho "ALert,too many login users ( total: $username)" //如果大于3个用户侧显示具体几个用户else       //当条件不成立的时候执行下面的语句echo "login user:"who | awk `{print $1 ,$2}`    //显示登录系统的用户名和终端fi上面的 then可以跟在if后一起写 用;分开 表示一次执行两个命令之后在给脚本一个权限就可以证实是否超过3个用户还是小于3个用户。双分支的if语句有时候还不能满足管理的要求这时候就出来了多分支的if  语句3: 多分支的if语句 if语言能够嵌套使用,进行多次判断,(例如判断某学生的得分是否及格,若及格侧再判断是否高于90分…………等等)格式如下if  条件测试1then命令序列1elif 条件测试2then命令序列1else命令序列3fi   上面的语句只嵌套了一个elif,实际上可以嵌套多个elif语句,使用多分支的if语句结构时,会依次对多个条件进行测试,一旦条件成立时即退出选择结构,否则将执行相应的命令序列后再跳转到fi ,结束判断。。我们还以mysql服务的进程来进行讲解例如: 检查MySQL进程是否已经存在,若存在则输出“MySQLd service is running”如果不存在 则检查是否存在 /etc/rc.d/init.d/mysqld 可执行脚本,存在则启动 MySQLd服务。 如果都不存在 则提示“no mysqld file”.分析:首先我们要检查MySQLd的进程是否存在 用 pgrep 检查  返回值在和0比较 vi mysqld.sh#!/bin/bashpgrep mysqld &> /dev/null       //检查进程if [ $? -et 0 ] :then                       //比较echo "mysqld service is running"   //如果上面成立则输出elif  [ -x "/etc/rc.d/init.d/mysqld" ]; then    //上面的条件不成立在测试service mysqld start                  // 如果有这个脚本就启动else                                         //上面两个都没有成立 则执行else后面的语句echo "no mysqld script file"      fi
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部