day02:测试语句
测试语句:
格式:[ 命令 ];命令前后都有空格
测试语句的作用:
1.判断shell脚本的执行结果
2.判断对象是否存在,比如说一个目录是否存在,不存在就创建出来
3.判断磁盘、内存是否超出阈值,比如超出80%,就要执行邮件报警什么的
常用逻辑判断符:
&&:逻辑与; ||:逻辑或;
例如:
命令1 && 命令2 && 命令3 || 命令4 ###意思就是命令1返回为真,执行命令2;命令2返回为真,执行命令3;命令3返回为假,执行命令4
###此处的真假,可以狭义上理解为命令是否执行成功
==========================
①文件判断(linux下一切皆为文件)
-e:判断对象是否存在,无论是文件还是目录
-f:对象是否存在,且是普通文件
-d:对象是否存在,且是目录
-x:对象是否存在,并且可执行的
例如:判断目录是否存在,不存在就创建
[root@rhel4 ~]# [ -d /test ] && echo "/test 已经存在" || mkdir /test ##-d判断/test目录是否存在,存在就执行"&&‘后的命令
[root@rhel4 ~]# [ -d /test ] && echo "/test 已经存在" || mkdir /test ##再次执行,显然上面已经创建/test目录。然后执行"&&‘后的命令输出 /test 已经存在
/test 已经存在
②整数数值判断:[ 数值1 比较符 数组2 ]
-eq:是否等于 -ne:不等于
-gt:是否大于 -ge:大于等于
-lt:是否小于 -le:小于等于
例如:
[root@rhel4 ~]# [ 10 -le 10 ] && echo "ok" || echo "fail"
ok
[root@rhel4 ~]# [ 20 -le 10 ] && echo "ok" || echo "fail"
fail
③整数多数值的比较
-a:and,同时满足 -o:满足一个就可以
例如:
[root@rhel4 ~]# [ 10 -gt 0 -a 10 -lt 100 ] && echo "10大于0,小于100" || echo echo "fail"
10大于0,小于100
实战:创建一个备份目录
vim /server/scripts/day02.sh #!/bin/bash ##定时备份本地的文件到备份目录,后期是会把这个目录通过rsync推送到备份服务器上的 #1.定义备份目录,备份目录的命令是/backup/主机名_ip_日期 BackupDir=/backup Host=`hostname` IP=`ifconfig | grep -i "255.255.255.0" | awk '{print $2}'` Day=`date +%F` Dest=${BackupDir}/${Host}_${IP}_${Day} [ -d ${Dest} ] && echo "备份目录${Dest}已经创建" || mkdir -p ${Dest}
执行脚本: