条件测试
格式一:test 条件表达式
格式二:[ 条件表达式 ]
格式三:[[ 条件表达式 ]]
test -d /backup
-
test
是指令; -
test -d /backup
:判断是否存在/backup
目录;
test -d /backup ; mkdir -p /backup
test -d /backup || mkdir -p /backup
test -d /backup && mkdir -p /backup
-
命令1 ;命令2
:命令1无论是否执行成功,都会执行命令2; -
命令1 || 命令2
:命令1执行成功,才会执行命令2; -
命令1 && 命令2
:命令1执行失败,才会执行命令2;
数值比较
-
[ 1 -gt 10 ]
:大于 -
[ 1 -lt 10 ]
:小于 -
[ 1 -eq 10 ]
:等于 -
[ 1 -ne 10 ]
:不等于 -
[ 1 -ge 10 ]
:大于等于 -
[ 1 -le 10 ]
:小于等于
案例一:查看磁盘的使用状态,当磁盘使用率>=80%时,将磁盘使用率写入目标文件中
- 创建脚本文件
dish_use.sh
,内容如下:
#!/bin/bash
Disk_free=$(df -h|grep "/$"|awk '{print $(NF-1)}'|awk -F '%' '{print $1}')
if [ $Disk_free -ge 0 ]; then
echo "Dish is Use: ${Disk_free}%" > /tmp/disk_use.txt
fi
-
$()
将命令括起来; -
df -h
:查看磁盘的主要命令,如下所示:
image.png -
df -h|grep "/$"|awk '{print $(NF-1)}'|awk -F '%' '{print $1}'
:取出根目录/
,然后取出使用率,去除百分号,并打印出来; -
echo "Dish is Use: ${Disk_free}%" > /tmp/disk_use.txt
:写入文件 -
sh -x dish_use.sh
:可查看脚本的执行过程;
案例二:打印当前CPU的负载情况 1分钟,5分钟,15分钟
- 创建脚本文件
cpu.sh
,内容如下:
#!/bin/bash
Load_01=$(w|awk 'NR==1'|awk -F ':' '{print $4}'|awk -F ' ' '{print $1}')
Load_02=$(w|awk 'NR==1'|awk -F ':' '{print $4}'|awk -F ' ' '{print $2}')
Load_03=$(w|awk 'NR==1'|awk -F ':' '{print $4}'|awk -F ' ' '{print $3}')
echo "当前系统1分钟的负载是:$Load_01"
echo "当前系统5分钟的负载是:$Load_02"
echo "当前系统15分钟的负载是:$Load_03"
-
w
:是查看CPU负载的命令;
image.png -
w|awk 'NR==1'|awk -F ':' '{print $4}'|awk -F ' ' '{print $1}'
:取出第一行,然后以:
为分隔符,取出第四元素,然后以空格
为分隔符,取出对应的数据; - 执行脚本
sh cpu.sh
,结果如下:
image.png
流程控制
- 单分支结构:
if [ 条件语句 ];then
fi
- 双分支结构:
if [ 条件语句 ];then
语句一
else
语句二
fi
- 多分支结构:
if [ 条件语句 ];then
语句一
elif [ 条件语句 ];then
语句二
elif [ 条件语句 ];then
语句三
else
语句四
fi
案例:安装Apache
case语句
case 变量 in
模式1)
命令一
;;
模式2)
命令二
;;
模式3)
命令三
;;
模式其他*)
命令四
exit 1
esac
- 创建脚本文件
php.sh
,内容如下:
#!/bin/bash
echo "#####################"
echo "-----1.install php5.5#####"
echo "-----2.install php5.6#####"
echo "-----3.install php7.0#####"
echo "#####################"
read -p "请输入你要安装的版本数字编号:" num
while true
do
case $num in
1)
echo "php5.5 is done..."
break
;;
2)
echo "php5.6 is done..."
break
;;
3)
echo "php7.0 is done..."
break
;;
*)
read -p "请输入你要安装的版本数字编号:" num
esac
done
- while循环保证,在执行
其他模式*
下不会退出,执行过程如下:
image.png
案例:编写系统工具箱集合
- 创建脚本文件
system.sh
,内容如下:
#!/bin/bash
cat <<-EOF
==============================
h 显示命令帮助
f 显示磁盘分区
d 显示磁盘挂载
u 查看系统负载
q 退出程序
==============================
EOF
while true
do
read -p "请输入你想查看的系统状态对应码[d/m/u/q]: " sys
case $sys in
h)
help
;;
f)
diskutil list
;;
d)
df -h
;;
u)
uptime
;;
q)
break
;;
*)
echo "error"
exit 1
esac
done
-
执行过程如下:
image.png
网友评论