shell编程基础-7、变量测试

时间:2024-07-10 22:50:45

两种测试格式

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