1.单分支if条件语句

 if [ 条件判断式 ];then
程序
fi
或者
if [ 条件判断式 ]
then
程序
fi

注意事项:

1.if语句使用fi结尾,和一般语言使用大括号结尾不同

2.[ 条件判断式 ]就是使用test命令判断,所以中括号和条件判断式之间必须有空格 前后都要有

3.then后面跟符合条件之后执行的程序,可以放在[]之后,用";"分号分割。也可以换行写入,就不需要";"了

例如:判断分区使用率

脚本说明: 我的根分区是/dev/sdb5 我将 df -h 中的第五列的百分数字部分提取出来

赋给$rate 在用if判断比较结果是否大于80 大于则成立 不大于则不成立 成立则输出警告 不成立则不执行任何

当然我也可以将警告替换成其他 例如email信息或者触发另一个警告脚本以及将警告信息生成日志等等!

#!/bin/bash
#统计根分区使用率
#Author: pat (Email:@qq.com) rate=$(df -h | grep "/dev/sda5" | awk '{printf $5"\n"}' | cut -d "%" -f )
#把根分区使用率作为变量值赋予变量rate if [ $rate -ge ]
then
echo "WARNING! /dev/sda5 is full!!"
fi

2.双分支if条件语句

 if [ 条件判断式 ]
then
条件成立时,执行的程序
else
条件不成立时,执行的程序
fi

例如1:备份mysql数据库

 #!/bin/bash
#备份mysql数据库
ntpdate asia.pool.ntp.org $>/dev/null
#同步系统时间
date=$(date +%y%m%d)
#把当前系统时间的年月日格式赋予变量date
size=$(du -sh /var/lib/mysql)
#统计mysql数据库文件的大小,并把大小赋给变量size
if [ -d /tmp/dbbak ]
then
echo "Date : $date!" > /tmp/dbbak/dbinfo.txt
echo "Data size : $size" >> /tmp/dbbak/dbinfo.txt
cd /tmp/dbbak
tar -zcf mysql-lib-$date.tar.gz /var/lib/mysql dbinfo.txt &>/dev/null
rm -rf /tmp/dbbak/dbinfo.txt
else
mkdir /tmp/dbbak
echo "Date : $date!" > /tmp/dbbak/dbinfo.txt
echo "Data size : $size" >> /tmp/dbbak/dbinfo.txt
cd /tmp/dbbak
tar -zcf mysql-lib-$date.tar.gz /var/lib/mysql dbinfo.txt &>/dev/null
rm -rf /tmp/dbbak/dbinfo.txt
fi

示例二:判断apache是否启动:

需要安装nmap命令 CentOS下执行:yum -y installl nmap

 #!/bin/bash

 port=$(nmap -sT localhost | grep tcp | grep http | awk '{print $2}')
echo "$port"
##使用nmap命令扫描服务器,并截取apache服务的状态,赋给变量port
if [ "$port" == "open" ]
then
echo "$(date) httpd is ok!" >> /tmp/autostart-acc.log
else
if [ -f "/etc/init.d/httpd" ] ; then
/etc/init.d/httpd start &>/dev/null
echo "$(date) restart httpd !!" >> /tmp/autostart-err.log
else
echo "error is not httpd server your is chack apache?"
fi
fi

http.sh

3.多分支if条件语句

 if [ 条件判断1 ] ; then
当前条件判断式1成立时,执行的程序
elif [ 条件判断2 ] ; then
当前条件判断2成立时,执行的程序
.......可写多个
else
当所有条件均不成立时,执行的程序
fi

例如:1

#!/bin/bash
read -p "Please input -a filename:" file
# 接收键盘的输入,并赋给变量file
if [ -z "$file" ]
# 判断变量file是否为空
then
echo "Error please input a filename"
exit
elif [ ! -e "$file" ] ; then
# 判断file的值是否存在
echo "Your input is not a file!"
exit
elif [ -f "$file" ] ; then
echo "is file"
elif [ -d "$file" ] ; then
echo "is directory"
else
echo "$file is an other file!"
fi

shell学习之路:流程控制(if)的更多相关文章

  1. shell学习之路:流程控制(while)

    while循环: 介绍:while循环是不定循环,也称作条件循环.只要条件判断成立,循环就会一直继续执行,直到条件判断不成立,循环才会停止,这就是和for的固定循环不太一样了. while [ 条件判 ...

  2. shell学习之路:流程控制(for)

    for循环的语法: 1.  for 变量 in 值1 值2 值3.... do 程序 done 例如:下列脚本会分别打印4次 分别是morning noon afternoon evening的值 # ...

  3. lishell学习之路:流程控制(case)

    流程控制case语句: 介绍:多分支case条件语句 1.case语句和if..elif..else语句一样都是多分支条件语句,不过和if多分支条件语句不同的是,case语句只能判断一种条件关系,而i ...

  4. GO语言的进阶之路-流程控制

    GO语言的进阶之路-流程控制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 流程控制在编程语言中是最伟大的发明了,因为有了它,你可以通过很简单的流程描述来表达很复杂的逻辑.流程控制 ...

  5. [Shell]条件判断与流程控制:if, case, for, while, until

    ---------------------------------------------------------------------------------------------------- ...

  6. Shell入门教程:流程控制(1)命令的结束状态

    在Bash Shell中,流程控制命令有2大类:“条件”.“循环”.属于“条件”的有:if.case:属于“循环”的有:for.while.until:命令 select 既属于“条件”,也属于“循环 ...

  7. shell echo/read/printf/流程控制章节笔记

    // echo read printf 流程控制 命令 1.read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量 read hello 输入xxx echo $hell ...

  8. Python学习笔记 - day4 - 流程控制

    Python流程控制 Python中的流程控制主要包含两部分:条件判断和循环. Python的缩进和语法 为什么要在这里说缩进和语法,是因为将要学习的条件判断和分支将会涉及到多行代码,在java.c等 ...

  9. Shell(三)流程控制

    Shell 流程控制 和Java.PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): <?php if (isset($_GET["q"])) { ...

随机推荐

  1. 【BZOJ-2055】80人环游世界 上下界费用流 (无源无汇最小费用最大流)

    2055: 80人环游世界 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 321  Solved: 201[Submit][Status][Discus ...

  2. 【BZOJ-3555】企鹅QQ 字符串Hash

    3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1545  Solved: 593[Submit][Statu ...

  3. 【poj3461】 Oulipo

    http://poj.org/problem?id=3461 (题目链接) 题意 求一个字符串在另一个字符串中出现的次数. Solution KMP裸题,太久没写过了,都忘记怎么求next数组了..水 ...

  4. DedeCMS Xss+Csrf Getshell \dede\file_manage_control.php

    目录 . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 对这个漏洞的利用方式进行简单的概括 . 这个漏洞的利用前提是需要登录到后台进行操作 ...

  5. winfrom程序如何做到快速关闭窗体

    private void Form1_FormClosed(object sender, FormClosedEventArgs e) { Process.GetCurrentProcess().Ki ...

  6. 获取URL的code的参数的值

    1.获取URL的code的参数的值 需求说明:现在有URL为http://www.bdqn.cn/index.php?code=sdR4,请使用字符串对象的属性和方法来获取code的值,并把其指都转化 ...

  7. HD1814Peaceful Commission(模板题)

    题目链接 题意: 和平委员会 根据宪法,Byteland民主共和国的公众和平委员会应该在国会中通过立法程序来创立. 不幸的是,由于某些党派代表之间的不和睦而使得这件事存在障碍. 此委员会必须满足下列条 ...

  8. mybatis的分页插件使用方法

    1.下载所需要的jar包,如果使用maven可以在maven中添加依赖: 插件的实现原理: 如果你想使用本项目的jar包而不是直接引入类,你可以在这里下载各个版本的jar包(点击Download下的j ...

  9. DS18B20函数库建立实验

    1.主代码: /* 温度传感器  */#include "DS18B20.h"#include"def.h"u16 get_temp (void){    fl ...

  10. Jsonp类

    public class JsonpResult : JsonResult { public JsonpResult() { this.Callback = "callback"; ...