ShellCommands

[TOC]

test

Shell中的 test 命令用于检查某个条件是否成立,它可以进行表达式、数值、字符和文件的测试。

格式

在Shell脚本编程中,有两种方式使用test命令。

  • test option file

  • [ option file ]

使用[]代替test时, 表达式两侧([]内)的空格不能省略.

测试

表达式

表达式一般是文本、数字或文件和目录属性的比较,并且可以包含变量、常量和运算符。运算符可以是字符串运算符、整数运算符、文件运算符或布尔运算符。

#!/bin/bash

# 表达式测试

if test 2 > 1
then 
    echo 'True'
else
    echo 'False'
fi

if [ 3 -gt 2 -a 1 -gt 2 ]
then
    echo 'All True'
else
    echo 'Not all true'
fi

输出:

数值测试

参数

说明

-eq

等于则为真

-ne

不等于则为真

-gt

大于则为真

-ge

大于等于则为真

-lt

小于则为真

-le

小于等于则为真

字符串测试

参数

说明

=

等于则为真

!=

不相等则为真

-z 字符串

字符串的长度为零则为真

-n 字符串

字符串的长度不为零则为真

文件测试

文件测试运算符用于检测 Unix 文件的各种属性

操作符

说明

举例

-b file

检测文件是否是块设备文件,如果是,则返回 true。

[ -b $file ] 返回 false。

-c file

检测文件是否是字符设备文件,如果是,则返回 true。

[ -c $file ] 返回 false。

-d file

检测文件是否是目录,如果是,则返回 true。

[ -d $file ] 返回 false。

-e file

检测文件(包括目录)是否存在,如果是,则返回 true。

[ -e $file ] 返回 true。

-f file

检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。

[ -f $file ] 返回 true。

-g file

检测文件是否设置了 SGID 位,如果是,则返回 true。

[ -g $file ] 返回 false。

-G file

检测文件存在并属于有效组ID

-h file

检测文件存在并是一个符号连接(同 -L)

-k file

检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。

[ -k $file ] 返回 false。

-L file

检测文件存在并是一个符号连接(同 -h)

-o file

检测文件存在并属于有效用户ID

-p file

检测文件是否是命名管道,如果是,则返回 true。

[ -p $file ] 返回 false。

-r file

检测文件是否可读,如果是,则返回 true。

[ -r $file ] 返回 true。

-s file

检测文件是否为空(文件大小是否大于0),不为空返回 true。

[ -s $file ] 返回 true。

-S file

检测是否是套接字

-u file

检测文件是否设置了 SUID 位,如果是,则返回 true。

[ -u $file ] 返回 false。

-w file

检测文件是否可写,如果是,则返回 true。

[ -w $file ] 返回 true。

-x file

检测文件是否可执行,如果是,则返回 true。

[ -x $file ] 返回 true。

逻辑操作符

Shell还提供了与( -a )、或( -o )、非( ! )三个逻辑操作符用于将测试条件连接起来,其优先级为:"!"最高,"-a"次之,"-o"最低。

man test

最后更新于