目录
3.查看内存/当前使用状态,如果使用率超过80%则报警发邮件
shell条件测试
格式一:test条件表达式
格式二:[条件表达式]
格式三:[[条件表达式]]
1.文件测试
[-e dir|file] 是否存在
[-d dir]是否存在,而且是目录
[-f file]是否存在,而且是文件
[-r file] 读权限
[-x file] 执行权限
[-w file] 写权限
[-L file]
1.常用方式
[root@www ~]# test -f test.txt
[root@www ~]# echo $?
1
[root@www ~]# ll | grep test.txt
[root@www ~]# [ ! -d test.txt ]&&touch test.txt
[root@www ~]# echo $?
0
[root@www ~]# ll | grep test.txt
-rw-r--r-- 1 root root 0 Jul 5 14:28 test.txt
[root@www ~]# rm test.txt -f
[root@www ~]# [ -f test.txt ]||touch test.txt
[root@www ~]# echo $?
0
[root@www ~]# ll | grep test.txt
-rw-r--r-- 1 root root 0 Jul 5 14:29 test.txt
2.脚本使用方式
[root@www ~]# vim backup.sh
#!/bin/bash
back_dir=/var/mysql_back
#test -d $back_dir || mkdir -p $back_dir
if [ ! -d $back_dir ];then
mkdir -p $back_dir
fi
echo "开始备份..."
运行结果如下:
[root@www ~]# bash backup.sh
开始备份...
2.数值比较
数值比较[ 整数1 操作符 整数2 ]
[ 10 -gt 20 ] 大于
[ 1 -lt 10 ] 小于
[ 1 -eq 10 ] 等于
[ 10 -ne 20 ] 不等于
[ 10 -ge 20 ] 大于等于
[ 10 -le 20 ] 小于等于
1.条件测试,脚本使用案例,创建用户
[root@www ~]# vim creat_user.sh
#!/bin/bash
read -p "Pleases input a username: " user
#if id $user &> /dev/null;then
id $user &> /dev/null
if [ $? -eq 0 ];then
echo "user $user already exists"
else
useradd $user
if [ $? -eq 0 ];then
echo "$user created."
fi
fi
测试结果如下:
[root@www ~]# bash creat_user.sh
Pleases input a username: yangf
yangf created.
[root@www ~]# bash creat_user.sh
Pleases input a username: yangf
user yangf already exists
2.查看磁盘/当前使用状态,如果使用率超80%则报警发邮件
//怎么查看磁盘使用率,怎么获取对应的值
df -h|grep "/$" |awk '{print $5}'|awk -F '%' '{print $1}'
//怎么进行数值对比
if [ $Disk_Free -ge 30 ];then
echo "Disk is user${Disk_Free}%" > /tmp/disk_use.txt
fi
脚本:
[root@www ~]# vim disk_free.sh
#!/bin/bash
Disk_Free=$(df -h | grep "/$"|awk '{print $5}'|awk -F '%' '{print $1}')
if [ $Disk_Free -ge 80 ];then
echo "Disk Is Use:${Disk_Free}%" > /tmp/disk_use.txt
fi
3.查看内存/当前使用状态,如果使用率超过80%则报警发邮件
[root@www ~]# vim mem.sh
#!/bin/bash
Mem_Total=$(free -m|grep "^M"|awk '{print $2}')
Mem_Use=$(free -m|grep "^M"|awk '{print $3}')
Mem_B=$((($Mem_Use*100)/$Mem_Total))
if [ $Mem_B -ge 80 ];then
echo -e "\033[31m Memory Is Err ${Mem_B}% \033[0m"
else
echo -e "\033[32m Memory Is OK ${Mem_B}% \033[0m"
fi
3.字符串比较
1.字符串比对
[root@www ~]# [ "$USER" = "root" ];echo $?
0
[root@www ~]# [ "$USER" == "root" ];echo $?
0
[root@www ~]# AAA=""
[root@www ~]# echo ${#AAA}
0
[root@www ~]# [ -z "$AAA" ] 字符长度为0
[root@www ~]# echo $?
0
[root@www ~]# [ -n "$AAA" ] 字符长度不为0
[root@www ~]# echo $?
1
//变量为空或未定义: 长度都为0
2.字符串对比
[root@www ~]# [ "$USER" = "root" ];echo $?
0
[root@www ~]# [ "$USER" = "yangf" ];echo $?
1
[root@www ~]# [ "$USER" != "xiaoming" ];echo $?
0
3.多整数对比条件
[root@www ~]# [ 5 -lt 6 -a 8 -gt 10 ];echo $?
1
[root@www ~]# [ 5 -lt 6 -o 8 -gt 10 ];echo $?
0
[root@www ~]# [[ 5 -lt 6 && 8 -gt 10 ]];echo $?
1
[root@www ~]# [[ 5 -lt 6 || 8 -gt 10 ]];echo $?
0
4.正则比对
[root@www ~]# [ "$USER" = "root" ];echo $?
0
[root@www ~]# [ "$USER" =~ ^r ];echo $?
-bash: [: =~: binary operator expected
2
[root@www ~]# [[ "$USER" =~ ^r ]];echo $? //使用正则
0
//判断变量是不是数字
[root@www ~]# num=123
[root@www ~]# [[ "$num" =~ ^[0-9]+$ ]];echo $?
0
[root@www ~]# [[ "$num20" =~ ^[0-9]+$ ]];echo $?
1
[root@www ~]# num20=5555555
[root@www ~]# [[ "$num20" =~ ^[0-9]+$ ]];echo $?
0
5.判断用户输入的是否是数字
#!/bin/bash
read -p "请输入一个数值:" num
if [[ "$num" =~ ^[0-9]+$ ]];then
echo "Number Is $num"
exit
fi
echo " 你输入的不是数字,程序退出!!!"
6.批量创建用户脚本,测试使用
[root@www data]# vim creat_user.sh
#!/bin/bash
read -p "请输入创建的各数: " num
read -p "请输入创建的名称" prefix
for i in `seq $num`
do
user=$prefix$i
useradd $user
echo "123" |passwd --stdin $user &> /dev/null
if [ $? -eq 0 ];then
echo "$user is created."
fi
done
测试结果:
[root@www data]# bash creat_user.sh
请输入创建的各数: 5
请输入创建的名称yangftest
yangftest1 is created.
yangftest2 is created.
yangftest3 is created.
yangftest4 is created.
yangftest5 is created.
[root@www data]# cat /etc/passwd | grep yangftest
yangftest1:x:1001:1001::/home/yangftest1:/bin/bash
yangftest2:x:1002:1002::/home/yangftest2:/bin/bash
yangftest3:x:1003:1003::/home/yangftest3:/bin/bash
yangftest4:x:1004:1004::/home/yangftest4:/bin/bash
yangftest5:x:1005:1005::/home/yangftest5:/bin/bash
7.批量创建用户脚本,改进版
[root@www data]# vim creat_user1.sh
#!/bin/bash
read -p "请输入你需要创建的用户数:" num
if [[ ! "$num" =~ ^[0-9]+$ ]];then
echo "error number!" && exit 1
fi
read -p "请输入你需要创建的用户名:" prefix
if [ -z "$prefix" ];then
echo "error prefix"
exit
fi
for i in `seq $num`
do
user=$prefix$i
useradd $user
echo "123456" |passwd --stdin $user &>/dev/null
if [ $? -eq 0 ];then
echo "$user is created."
fi
done
测试:
[root@www data]# bash creat_user1.sh
请输入你需要创建的用户数:3
请输入你需要创建的用户名:jiejie
jiejie1 is created.
jiejie2 is created.
jiejie3 is created.