两种测试格式
test
[]
1、字符串
(1)、数组测试
== 判断是否相同
! = 判断两侧是否不等
[root@moudle01 16:29:46 ~]# a=1
[root@moudle01 16:29:51 ~]# b=2
[root@moudle01 16:29:52 ~]# [ $a != $b ]
[root@moudle01 16:30:04 ~]# echo $?
0
如果一个变量值为空,我们在进行比较时,
1、可以加上双引号
2、-z:判断变量是否为空
! -Z/-n:判断变量是否非空
[root@moudle01 16:33:11 ~]# [ a == "$c" ]
[root@moudle01 16:33:23 ~]# echo $?
1
[root@moudle01 16:33:27 ~]# [ -z "$c" ]
[root@moudle01 16:35:13 ~]# echo $?
0
[root@moudle01 16:35:16 ~]# [ -z "$a" ]
[root@moudle01 16:35:22 ~]# echo $?
1
[root@moudle01 16:38:16 ~]# c=123
[root@moudle01 16:38:23 ~]# [ -n "$c" ]
[root@moudle01 16:38:26 ~]# echo $?
0
(2)、逻辑测试
&&与
||或
#!/bin/bash
[ $USER == root ] || echo "非管理员禁止执行该脚本" && exit
yum -y install vsftpd > /dev/null
systemctl start vsftpd
systemctl enable vsftpd
# 只有root用户可以执行此脚本
#!/bin/bash
[ $USER != root ] && echo "非管理员禁止执行" && exit2
yum -y install vsftpd > /dev/null
systemctl start vsftpd
systemctl enable vsftpd
[root@moudle01 16:57:25 /script]# ls a || ls b && ls c || ls && ls /etc/yum.repos.d/
a
c
bak epel local_yum_house.repo
2、数字
-eq:相等
-ne:不相等
-gt:大于
-ge:小于等于
-lt:小于
-le:小于等于
#!/bin/bash
[ $# -ne 2 ] && echo "输入变量数量错误" && exit
useradd $1
echo $2 | passwd --stdin $1
3、文件
-e:判断文件是否存在,不关心文件类型
-f:判断文件是否存在,必须是普通文件
-d:判断文件是否存在,必须是目录
[root@moudle01 17:19:49 /script]# [ -e a ]
[root@moudle01 17:20:00 /script]# echo $?
0
[root@moudle01 17:20:03 /script]# [ -d a ]
[root@moudle01 17:20:09 /script]# echo $?
1
[root@moudle01 17:20:10 /script]# [ -f x ]
[root@moudle01 17:20:21 /script]# echo $?
1
-r:判断当前用户对文件是否有读权限(对root无效,只针对普通用户)
-w:判断当前用户对文件是否有写权限(对root无效,只针对普通用户)
-x:判断当前用户对文件是否有x权限
[root@moudle01 17:21:45 /script]# [ -r a ]
[root@moudle01 17:22:02 /script]# echo $?
0
[root@moudle01 17:22:05 /script]# [ -w a ]
[root@moudle01 17:22:09 /script]# echo $?
0
[root@moudle01 17:22:10 /script]# [ -x a ]
[root@moudle01 17:22:17 /script]# echo $?
1
4、编写脚本
每隔两分钟检查服务器的账户数量,如果发现增加,则给管理员发邮件
#!/bin/bash
num=$(cat /etc/passwd | wc -l)
[ num -gt 38 ] && echo "用户增加" | mail -s "user_info" root
# 编写计划任务
*/2 * * * * /script/test02.sh