shell条件测试


文件测试
- d 目录
- s 文件长度大于0、非空
- f 正规文件
- w 可写
- L 符号连接
- r 可读
- x 可执行
- u 文件有s u i d位设置


[root@localhost ~]# ls -l scores.txt 
-rw-r--r-- 1 root root 0 Nov 21 12:15 scores.txt
[root@localhost ~]# [ -w scores.txt ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# test -w scores.txt 
[root@localhost ~]# echo $?
0


-a 逻辑与,操作符两边均为真,结果为真,否则为假。
-o 逻辑或,操作符两边一边为真,结果为真,否则为假。
! 逻辑否,条件为假,结果为真。


[root@localhost ~]# ls -l results.txt scores.txt       
-rwxr-xr-x 1 root root 0 Nov 21 12:22 results.txt
-rw-r--r-- 1 root root 0 Nov 21 12:15 scores.txt


[root@localhost ~]# [ -w results.txt -a -w scores.txt ]
[root@localhost ~]# echo $?
0


字符串测试:
==两个字符串相等。
!= 两个字符串不等。
-z 空串。
-n 非空串


[root@localhost ~]# TAPE="/dev/rmt0"
[root@localhost ~]# TAPE2="/dev/rmt1"
[root@localhost ~]# [ "$TAPE" == "$TAPE2" ]
[root@localhost ~]# echo $?
1


[pirate@yangwenhai ~]$ [ -n /etc/passwd ]
[pirate@yangwenhai ~]$ echo $?           
0
[pirate@yangwenhai ~]$ [ -z /etc/passwd ] 
[pirate@yangwenhai ~]$ echo $?           
1


数字测试:
-eq 数值相等。
-ne 数值不相等。
-gt 第一个数大于第二个数。
-lt 第一个数小于第二个数。
-le 第一个数小于等于第二个数。
-ge 第一个数大于等于第二个数。


[root@localhost ~]# [ "990" -le "995" -a "123"  -gt "33" ]      
[root@localhost ~]# echo $?
0


expr ,用来进行算术运算
[pirate@yangwenhai ~]$ A=`expr 10 + 10` 
[pirate@yangwenhai ~]$ echo $A          
20


判断一个变量是不是数字:
[root@localhost ~]# VALUE=12
[root@localhost ~]# expr $VALUE + 10 > /dev/null 2>&1
[root@localhost ~]# echo $?
0
[root@localhost ~]# VALUE=hello
[root@localhost ~]# expr $VALUE + 10 > /dev/null 2>&1
[root@localhost ~]# echo $?
3

你可能感兴趣的:(shell条件测试)