shell编程-流程控制-if语句
2017-06-07 15:20
417 查看
1. 单分支if条件语句
单分支if条件语句有三种写法:if [ 条件判断式 ]; then 操作 fi
或者
if [ 条件判断式 ] then 操作 fi
或者
if [ 条件判断式 ];then 操作;fi
说明:只有条件成立,才执行相应的操作。
示例:
if [ aa==aa ];then echo yes;fi
注意要点:
if语句使用fi结尾。
[ 条件 ] 中括号的内部两侧必须有空格。
如果then和上面的if判断在同一行,要用分号;分割。
示例:判断根分区的使用率
写一个shell脚本usage.sh:
#!/bin/bash # 判断根分区的使用率 # Author: root rate=$(df -h | grep "/dev/sda3" | awk '{print $5}' | cut -d "%" -f1) # 把分区/dev/sda3的使用率作为值赋予变量rate if [ $rate -ge 80 ];then echo "Warning! /dev/sda3 is full" fi
2. 双分支if条件语句
基本格式:if [ 条件 ] then 条件成立时,执行操作1 else 条件不成立时,执行操作2 fi
示例:备份mysql数据库
#!/bin/bash #备份mysql数据库 #Author: root ntpdate asia.pool.ntp.org &>/dev/null #同步系统时间,并将执行结果直接丢弃(即不输出到屏幕) #Linux默认没有ntpdate命令,可用 yum -y install ntpdate 安装 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
示例2:判断apache的运行状态
#!/bin/bash #linux默认没有安装apache,可用 yum -y install httpd 快速安装 #但如果是作为真实的服务器,建议用源码包安装apache state=$(nmap -sT 192.168.200.128 | grep tcp | grep http | awk '{print $2}') #使用nmap命令扫描服务器,并截取Apache服务器的状态,赋予变量state #Linux默认没有nmap命令,可用 yum -y install nmap 快速安装 #说明:nmap命令比ps或netstat要好,它判断的更准确 #比如apache虽然是启动状态但无法正常响应客户请求时,用nmap能检测出真实的运行状态 if [ "$state" == "open" ] then echo "$(date) httpd is OK" >> /tmp/autostart-acc.log else /etc/rc.d/init.d/httpd restart &>/dev/null echo "$(date) restart httpd" >> /tmp/autostart-err.log fi
可使用Linux的定时任务让该脚本文件每15分钟执行一次,从而保证apache的正常运行。
3. 多分支if条件语句
基本格式:if [ 条件1 ] then 当条件1成立时,执行操作1 elif [ 条件2 ] then 当条件2成立时,执行操作2 ... else 当所有条件都不成立时,执行最终操作 fi
示例:判断用户的输入
#!/bin/bash #判断用户的输入 #Author:root read -p "Please input a filename: " filename #接收键盘的输入,并赋给变量filename if [ -z $filename ] then echo "Error, please input a filename" exit 1 #exit后面跟数字,可以指定脚本执行后 $? 的值。后面的代码不会执行。 elif [ ! -e $filename ] then echo "There is no such file" exit 2 elif [ -f $filename ] then echo "$filename is a regular file" elif [ -d $filename ] then echo "$filename is a directory" else echo "$filename is a special file" fi
相关文章推荐
- Shell编程-流程控制-if、case语句
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
- linux shell awk 流程控制语句(if,for,while,do)详细介绍
- 流程控制陷阱(Switch语句,标签,if语句,for循环,foreach循环的循环计数器)
- Shell学习笔记(8)-流程控制之IF语句
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
- linux shell awk 流程控制语句(if,for,while,do)详细介绍
- Linux学习之道:linux中流程控制语句if if else case
- 流程控制-分支-if语句
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
- SQL Server-流程控制 2,If...Else 语句
- SQL 流程控制语句 之一 IF…ELSE语句
- 程序的流程控制----if语句
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例 --转载
- linux shell awk 流程控制语句(if,for,while,do)详细介绍