shell的测试表达式

shell的测试表达式
[ 表达式 ]
[空格 数字 空格 数字 空格]
test 表达式

1、字符串测试

-z 字串为空   [ -z 字符串 ]
!-z字串为非空  [ !-z 字符串 ]
[root@vh01 ~]# a=12
[root@vh01 ~]# [  -z $a ]
[root@vh01 ~]# echo $?
1
[root@vh01 ~]# [ ! -z $a ]
[root@vh01 ~]# echo $?
0

字符串比较
[ a == a ]
[ a != a ]
STRING1 == STRING2
STRING1 != STRING2
INTEGER1 -eq INTEGER2
INTEGER1 -ge INTEGER2


2、数字比较
[root@vh01 ~]# [ 3 -eq 3 ]              判断3是否等于3
-eq     等于                      equal
-ne     不等于                   not equal
-gt     大于                       greater than
-ge    大于等于                  
-lt      小于                        less than
-le     不于等于                   

[root@vh01 ~]# [ 3 -eq 3 ]  && echo Y || echo N
[root@vh01 ~]# [ 3 -eq 4 ]  && echo Y || echo N

命令的组合
A&&B     仅A成功,才执行B
A||B         仅A失败,才执行B
A;B          执行A,执行B

请输入一个数
你猜对了
遗憾!
#!/bin/bash
read -p "你确定要删除吗y/n?"   sure
[ -z $sure ]&& exit
[ $sure = y ]&& rm -rf $1 || echo "请输入值"

用户数大于5报警发邮件的脚本
#!/bin/bash
NUM=$(who |wc -l)
[ $NUM -ge 5 ]&& mail -s 'error' root < /etc/passswd

[root@vh01 script]# echo $RANDOM        随机数
#!/bin/bash
num=$[RANDOM%10]
read -p '请输入一个数:' guess
[ $num -eq $guess ] && echo "你猜对了" || echo "遗憾!"

3、对文件和目录的测试
-e      文件或目录      判断是否存在
-d      文件或目录      判断是否存在且为目录
-f      文件或目录       判断是否存在且为文件
-r      文件或目录       判断是否存在且有读权限
-w      文件或目录      判断是否存在且有写权限
-x      文件或目录       判断是否存在且有执行权限
-s      文件或目录       判断是否存在且非空

[root@vh01 ~]# [ -f /etc/hosts ] && echo Y || echo N

[root@vh01 script]# vim mount.sh
#!/bin/bash
[ ! -d /mnt/iso ] && mkdir -p /mnt/iso
[ -e  /ISO/rhel-server-6.7-x86_64-dvd.iso  ]&& mount -o loop /ISO/rhel-server-6.7-x86_64-dvd.iso  /mnt/iso

test 测试操作

[root@vh01 script]# test 3 -eq 3
[root@vh01 script]# echo $?
0
[root@vh01 script]# [ 3 -eq 3 ]
[root@vh01 script]# echo $?
0

posted @ 2021-08-08 11:41  Linux刀客  阅读(109)  评论(0编辑  收藏  举报