第五节shell脚本中的运行流程控制
一,什么是运行流程控制
- 脚本默认的程序运行方式是自上而下运行
- 在我们的生成环境中,有的动作需要重复,有的动作需要满足一些条件
- 如何按照我们需要的逻辑运行动作,这就是流程控制
二,条件运行流程控制
条件运行流程控制是脚本在运行时,需要有几个分支,在符合那个条件运行那个分支在脚本中我们通常用if语句来编写条件控制流程
1,if单分支结构
#语法:
#!/bin/bash
if [条件]
then
动作1
动作2
... ...
fi
示例
当系统/分区使用容量超过80%时给root用户发送警告
vim demo_disk.sh
#!/bin/bash
Disk_Status=`df -h / |tr -s ' '| grep dev | cut -d " " -f 5 | cut -d % -f 1`
if [ "$Disk_Status" -gt "80" ]
then
echo "waring: / is full !!" | mail -s "Disk_waring" root
fi
2,if双分支结构
语法:
#!/bin/bash
if [条件]
then
动作1
动作2
... ...
else
动作1
动作2
... ...
fi
示例:
给定用户判断用户是否存在,如果存在显示用户存在,如果不存在建立用户
vim demo_disk.sh
#!/bin/bash
id $1 &> /dev/null
if [ "$?" = "0" ]
then
echo $1 is exist
else
useradd $1
fi
3,if多分支结构
语法:
if 条件表达式1
then
命令序列1
elif 条件表达式2
then
命令序列2
elif 条件表达式3
then
命令序列3
else
命令序列n
fi
示例:
给定一个文件名称,判定文件是否存在,如果存在显示文件的类型,如果不存在显示文件不存在
vim checkfile_demo.sh
#!/bin/bash
if [ -z "$1" ]
then
echo please input a checkfilename following $0 !!
elif [ ! -e "$1" ]
then
echo $1 is not exist
elif [ -L "$1" ]
then
echo $1 is common file
elif [ -d "$1" ]
then
echo $1 is directory
fi