test命令可以用于检查某个条件是否成立,可以分为数值、字符串、文件、变量四个方面,其中文件的测试包括文件类型、文件权限的判断和两个文件之间的比较。

数值

测试标志意义示例
-eq两数相等test n1 -eq -n2,n1等于n2返回true。
-ne两数不等test n1 -ne -n2,n1不等于n2返回true。
-gt前者大于后者test n1 -gt -n2,n1大于n2返回true。
-lt前者小于后者test n1 -lt -n2,n1小于n2返回true。
-ge前者大于等于后者test n1 -ge -n2,n1大于等于n2返回true。
-le前者小于等于后者test n1 -le -n2,n1小于等于n2返回true。

字符串

测试标志意义示例
-z字符串长度为0test -z str1,str1长度为0,返回true。
-n、string字符串长度不为0test -n str2或test str2,str2长度不为0,返回true。
=、==两字符串相等test str1 = str2,str1与str2相等,返回true。
!=两字符串不相等test str1 != str2,str1与str2不相等,返回true。
<比较字符串字典顺序test str1 < str2,按照字典顺序str1在str2之前,返回true。
>比较字符串字典顺序test str1 > str2,按照字典顺序str1在str2之后,返回true。

文件

测试标志意义示例
-e、-a文件名是否存在test -e filename,存在文件名filename,返回true。
-f文件名是否存在且为文件test -f filename,存在文件名filename且为文件,返回true。
-d文件名是否存在且为目录test -d filename,存在文件名filename且为目录,返回true。
-b文件名是否存在且为一个block device设备test -b filename,存在文件名filename且为一个block device设备,返回true。
-c文件名是否存在且为一个character device设备test -c filename,存在文件名filename且为character device设备,返回true。
-S文件名是否存在且为一个Socket文件test -S filename,存在文件名filename且为一个Socket文件,返回true。
-p文件名是否存在且为一个FIFO(pipe)文件test -p filename,存在文件名filename且为FIFO(pipe)文件,返回true。
-L文件名是否存在且为一个连接文件test -L filename,存在文件名filename且为一个连接文件,返回true。
-r文件名是否存在且具有“可读”权限test -r filename,存在文件名filename且具有“可读”属性,返回true。
-w文件名是否存在且具有“可写”权限test -w filename,存在文件名filename且具有“可写”属性,返回true。
-x文件名是否存在且具有“可执行”权限test -x filename,存在文件名filename且具有“可执行”属性,返回true。
-u文件名是否存在且具有“SUID”属性test -u filename,存在文件名filename且具有“SUID”属性,返回true。
-g文件名是否存在且具有“SGID”属性test -g filename,存在文件名filename且具有“SGID”属性,返回true。
-k文件名是否存在且具有“Sticky bit”属性test -k filename,存在文件名filename且具有“Sticky bit”属性,返回true。
-s文件名是否存在且为“非空白文件”test -s filename,存在文件名filename且为非空白文件,返回true。
-nt前者是否比后者新(根据修改日期)

test filename1 -nt filename2,filename1比filename2新或者filename1存在filename2不存在,返回true。

-ot前者是否比后者旧(根据修改日期)test filename1 -ot filename2,filename1比filename2旧或者filename2存在filename1不存在,返回true。
-ef是否为同一文件,可用在硬链接上。判断两个文件是否指向同一个inodetest filename1 --ef filename2,filename1与filename2为同一文件,返回true。
-h、-L文件存在且是符号链接test -h filename,存在文件名为filname且为符号链接,返回true。
-t文件描述符打开并指向终端test -t fd,如果文件描述符fd打开并指向终端,返回true。
-G文件存在且属于有效组idtest -G filename,存在文件名为filname,且属于有效组id,返回true。
-N文件存在且在最后一次读取后有修改test -N filename,存在文件名为filname,且在最后一次读取后有修改,返回true。
-O文件存在且属于有效用户idtest -O filename,存在文件名为filname,且属于有效用户id,返回true。

多重条件

测试标志意义示例
-a两个条件同时成立test -r filename -a -w filename,filename存在且同时具有读写权限,返回true。
-o任何一个条件成立test -r filename -o -w filename,filename存在且具有读或写权限,返回true。
!取反test ! -x filename ,filename存在且不具有执行权限,返回true。

变量

测试标志意义示例
-oshell内建命令set的-o选项是否启用 
-vshell变量是否已赋值 
-R

shell变量是否已赋值并且是名称引用

 

 

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐