文件测试操作符

作者: JSON_NULL | 来源:发表于2018-02-24 13:47 被阅读10次

-r:文件或目录对此(有效的)用户(effective user)或组是可读的
-w:文件或目录对此(有效的)用户或组是可写的
-x:文件或目录对此(有效的)用户或组是可执行的
-o:文件或目录由本(有效的)用户所有
-R:文件或目录对此用户(real user)或组是可读的
-W:文件或目录对此用户或组是可写的
-X:文件或目录对此用户或组是可执行的
-O:文件或目录由本用户所有
-e:文件或目录名存在
-z:文件存在,大小为0(目录恒为false)
-s:文件或目录存在,大小大于0(值为文件的大小,单位:字节)
-f:为普通文本
-d:为目录
-l:为符号链接
-S:为socket-p 为管道(Entry is a named pipe(a“fifo”))
-b:为block-special 文件(如挂载磁盘)
-c:为character-special 文件(如I/O 设备)
-u:setuid 的文件或目录
-g:setgid 的文件或目录
-k:File or directory has the sticky bit set
-t:文件句柄为TTY(系统函数isatty()的返回结果;不能对文件名使用这个测试)
-T:文件有些像“文本”文件
-B:文件有些像“二进制”文件
-M:修改的时间(单位:天)
-A:访问的时间(单位:天)
-C:索引节点修改时间(单位:天)

测试同一个文件的多项属性

if(-r $file and -w _) # 虚拟文件句柄 _
{...}

栈式文件操作符

use 5.010;
if( -r -w -x -o -d $file){

print "My directory is readable,writable,and executable!\n";
}

对于返回真假值以外的测试来说,栈式的写法并不出色。像下面的例子,我们原本是想操作某个512字节的目录,可实际上会出问题:

use 5.010;
if (-s -d $file <512){
    say ‘The directory is less than 512 bytes’;
}

如果按照其内部的现实方式展开,我们可以看到上面的例子实际上相当于如下的写法,整个合并起来的文件测试表达成了比较运算的一个操作数:

if ((-d $file and -s _)<512){
    print “The directory is less than 512 bytes!\n”;
}

当-d返回为假时,Perl将假值同数字512作比较。比较的结果就变为真,因为假等效为数字0,而0永远小于512。为了避免出现着这种错误,我们还是分开来写比骄傲好。

 if (-d $file and -s _ <512){
      print “The directory is less than 512 bytes!\n”;
 }

相关文章

  • 条件测试操作与流程控制语句

    【测试文件】 格式:[ 操作符 文件或目录 ] 操作符: ● -d :测试是否为目录,是则为真 ●-e: 测试文件...

  • 文件测试

    文件测试操作符 Perl提供了一组用于测试文件的操作符,并借此返回特定的文件信息。 -e测试文件是否存在 -M返回...

  • Learning Perl 学习笔记 Ch12 文件测试和按位操

    Perl提供了一组文件测试操作符,可以测试文件的各种属性。文件测试操作符看起来像是由一个连字符-和一个字母组成的,...

  • Shell | 控制流

    条件测试1.1 数值大小测试1.2 字符串测试1.3 文件测试1.4 逻辑操作符 判断 循环3.1 continu...

  • shell-判断

    文件测试-操作符:-gt 大于 | -lt 小于 | -eq 等于 | -ne 不等于 | ...

  • 文件测试操作符

    -r:文件或目录对此(有效的)用户(effective user)或组是可读的-w:文件或目录对此(有效的)用户或...

  • RxSwift文档六(单元测试)

    单元测试 测试自定义操作符 RxSwift用RxTest为所有操作符测试,位于Rx.xcworkspace项目内的...

  • Perl中的文件测试操作符

    内置函数文件操作 Perl中可以通过两个内置函数stat(),lstat()计算文件大小; lstat()、sta...

  • Shell脚本IF条件判断和判断条件总结

    检测文件属性的相关操作符如果文件存在,并且具有相应的属性,如下的操作符都会返回true:

  • js 隐式类型转换

    关系操作符(<, >, <=, >=) 相等操作符(==) 测试用例 可以看出,与前文所述隐式类型转换相符 BUG...

网友评论

    本文标题:文件测试操作符

    本文链接:https://www.haomeiwen.com/subject/lopqxftx.html