shell test命令是一个用于检查文件属性的内置命令,它可以用来测试文件的各种属性,如文件是否存在、文件的大小、文件的权限等。它也可以用来测试字符串、数字和其它表达式的真假。
test 命令有两种形式:单中括号形式 [ ] 和双中括号形式 [[ ]]。单中括号形式是 POSIX 标准,而双中括号形式是 bash 的扩展格式。
[ expression ] # 单中括号形式 [[ expression ]] # 双中括号形式
test 命令有很多不同的选项:-b 检测文件是否存在并且是一个块特殊文件;-c 检测文件是否存在并且是一个字符特殊文件;-d 检测目录是否存在;-e 检测文件或目录是否存在;-f 检测文件或目录是否存在并且是一个常规文件;-g 检测文件或目录是否存在并检测其拥有者 ID 是否设置了 SGID 位。
[ -b FILE ] # 测试 FILE 是不是一个块特殊文件 [ -c FILE ] # 测试 FILE 是不是一个字符特殊文件 [ -d DIR ] # 测试 DIR 是不是一个目录 [ -e FILE ] # 测试 FILE/DIR 是不是一个常规/特殊/目录/socket 等 [ -f FILE ] # 测试 FILE/DIR 是不是一个常规/特殊/目录/socket 等 [ -g FILE ] # 判定FILE的SGID位(set group id)
Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
参数 | 说明 |
---|---|
-eq | 等于则为真 |
-ne | 不等于则为真 |
-gt | 大于则为真 |
-ge | 大于等于则为真 |
-lt | 小于则为真 |
-le | 小于等于则为真 |
实例演示:
num1=100 num2=100 if test $[num1] -eq $[num2] then echo "两个数相等!" else echo "两个数不相等!" fi
输出结果:
两个数相等!
参数 | 说明 |
---|---|
= | 等于则为真 |
!= | 不相等则为真 |
-z 字符串 | 字符串长度为零则为真 |
-n 字符串 | 字符串长度不为零则为真 |
实例演示:
num1="" num2="" if test num1=num2 then echo "两个字符串相等!" else echo "两个字符串不相等!" fi
输出结果:
两个字符串相等!
参数 | 说明 |
---|---|
-e 文件名 | 如果文件存在则为真 |
-r 文件名 | 如果文件存在且可读则为真 |
-w 文件名 | 如果文件存在且可写则为真 |
-x 文件名 | 如果文件存在且可执行则为真 |
-s 文件名 | 如果文件存在且至少有一个字符则为真 |
-d 文件名 | 如果文件存在且为目录则为真 |
-f 文件名 | 如果文件存在且为普通文件则为真 |
-c 文件名 | 如果文件存在且为字符型特殊文件则为真 |
-b 文件名 | 如果文件存在且为块特殊文件则为真 |
实例演示:
cd /bin if test -e ./bash then echo "文件已存在!" else echo "文件不存在!" fi
输出结果:
文件已存在!
另外,Shell还提供了与( -a )、或( -o )、非( ! )三个逻辑操作符用于将测试条件连接起来,其优先级为:"!"最高,"-a"次之,"-o"最低。例如:
cd /bin if test -e ./notFile -o -e ./bash then echo "有一个文件存在!" else echo "两个文件都不存在" fi
输出结果:
有一个文件存在!
Linux 命令大全1、文件管理catchattrchgrpchmodchowncksumcmpdiffdiffstatfilefindgitgitviewindentcutlnlesslocatelsattrmattri...
yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的...
登录系统后,在当前命令窗口下输入命令: ls /你会看到如下图所示:树状目录结构:以下是对这些目录的解释:/bin:bin是Binary的...
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个...
我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为...