美文网首页
条件测试

条件测试

作者: Simon_Ye | 来源:发表于2020-03-04 12:01 被阅读0次

条件测试

判断某需求是否满足,需要由测试机制来实现

专用的测试表达式需要由测试命令辅助完成测试过程

评估布尔声明,以便用在条件性执行中

  • 若真,则返回0
  • 若假,则返回1

测试命令:

~]# test EXPRESSION
~]# [ EXPRESSION ]
~]# [[ EXPRESSION ]]

注意:EXPRESSION前后必须有空白字符

表达式

  • 数值测试:数值比较
     -eq:是否等于;
     -ne:是否不等于;
     -gt:是否大于;
     -ge:是否大于等于;
     -lt:是否小于;
     -le:是否小于等于;
  • 字符串测试:
     ==:是否等于;
     >:是否大于;
     <:是否小于;
     !=:是否不等于;
     =~:左侧字符串是否能够被右侧的PATTERN所匹配;
     -z "STRING":判断指定的字符串是否为空;空则为真,不空则为假;
     -n "STRING":判断指定的字符串是否不空;不空则为真,空则为假;

注意:

  1. 字符串要加引号;
  2. 要使用[[ ]];
  • 文件测试:
    1. 文件的存在性测试:存在则为真,否则为假;
       -e FILE
       -a FILE
    2. 类型测试:
       -b FILE:是否存在并且为块设备文件;
       -c FILE:是否存在并且为字符设备文件;
       -d FILE:是否存在并且为目录文件;
       -f FILE:是否存在并且为普通文件;
       -h|-L FILE:是否存在并且为符号链接文件;
       -p FILE:是否存在并且为命令管道文件;
       -S FILE:是否存在并且为套接字文件;
    3. 权限测试:
       -r FILE:是否存在并且对当前用户可读;
       -w FILE:是否存在并且对当前用户可写;
       -x FILE:是否存在并且对当前用户可执行;
    4. 特殊权限测试:
       -u FILE:是否存在并且拥有suid权限;
       -g FILE:是否存在并且拥有sgid权限;
       -k FILE:是否存在并且拥有sticky权限;
    5. 文件大小测试:
       -s FILE:是否有内容;
    6. 时间戳测试:
       -N FILE:文件自从上一次读操作后是否被修改过;
    7. 从属关系测试:
       -O FILE:当前用户是否为文件的属主;
       -G FILE:当前用户是否属于文件的属组;
    8. 双目测试:
       FILE1 -ef FILE2:测试两个文件是否为指向同一个文件系统上相同的inode硬链接;
       FILE1 -nt FILE2:FILE1是否新于FILE2;
       FILE1 -ot FILE2:FILE1是否旧于FILE2;

Bash 的组合测试条件

  1. 第一种方式:
    COMMAND1 && COMMAND2:并且
    COMMAND1 || COMMAND2:或者
    !COMMAND:非
    如:~]# [[ -r FILE ]] && [[ -w FILE ]]
  2. 第二种方式:
    EXPRESSION1 -a EXPRESSION2:并且
    EXPRESSION1 -o EXPRESSION2:或者
    !EXPRESSION:非
    必须使用测试命令进行
    示例:
    [root@node1 ~]# [ -z "$HOSTNAME" -o "$HOSTNAME"=="localhost.localdomain" ] && hostname www.magedu.com
    [root@node1 ~]# [ -f /bin/cat -a -x /bin/cat ] && cat /etc/fstab
    

相关文章

网友评论

      本文标题:条件测试

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