shell中的条件测试命令用法

    在shell脚本中应用条件测试时,关键是“测试表达式”。在条件语句中测试时首先分清楚测试什么类型的信息:数字、字符串、还是一个文件,要么就是一个逻辑关系。当遇到不同的测试类型时自然就有不同的“测试属性”,理解这个测试属性是必须的。不然就不知道从何处下手。



命令 用法
test test expr
[ [ expr ]


1 字符串测试

2 整数测试

3 文件测试

4 逻辑判断


MMMMMMMMMMMMMMMMMMMMMMMMMM


1 字符串(判断字符串相等、为空、不为空)


expr test [
loguser test $lastuser [ $loguser ] 为空
loguser = lastuser test $lastuser = $loguser
[ $loguser = "sunny" ] 相等
-n lastuser test -n lastuser [ -n $lastuser ] 不为空
-z lastuser test -z loguser [ -z $loguser ] 为空
比较时“=”两边保留空格,赋值时取消空格。



2 数字比较(整数比较大小、等于)


expr test [

age1 -eq age2

age1 -nq age2

test age1 -eq age2

test age1 -nq age2

[ age1 -eq age2 ]

[ age1 -nq age2 ]

等于

不等于

age1 -gt age2

age1 -lt age2

test age1 -gt age1

test age2 -lt age2

[ age1 -gt age1 ]

[ age2 -lt age2 ]

大于

小于

age1 -ge age1

age2 -le age2

test age1 -ge age1

test age2 -le age2

[ age1 -ge age1 ]

[ age2 -le age2 ]

大等于

小等于



3 文件测试


expr [
-b /dev/cdrom [ -b /dev/cdrom ] 存在且为块文件
-c /etc/inittab
[ -c /etc/fstab ] 存在……字符文件
-d /data01
…… ……且为目录文件
-e /~/.ssh/keys
…… ……存在
-s /~/.ssh/keys …… 是否非空
-f /etc/http/conf.d/ssl.cf
…… 存在且为常规文件
-w /data01/tmp/http.log
…… ……可写
-L /data01/tmp/http.log
…… ……符号链接
-u /data01/tmp/http.log
…… 设置suid位
-r /data01/tmp/http.log …… 存在且可读
-x /dinglicom/bin/httpd
…… ……可执行


4 逻辑判断

逻辑判断就像胶水一样把上边3者结合起来。

符号 含义
!
-a
-o






你可能感兴趣的:(text)