• 【Linux】【Shell】【Basic】条件测试


    1. 数值测试:数值比较
    -eq:是否等于; [ $num1 -eq $num2 ]
    -ne:是否不等于;
    -gt:是否大于;
    -ge:是否大于等于;
    -lt:是否小于;
    -le:是否小于等于;

    2. 字符串测试:
    ==:是否等于;
    >:是否大于;
    <:是否小于;
    !=:是否不等于;
    =~:左侧字符串是否能够被右侧的PATTERN所匹配;

    -z "STRING":判断指定的字串是否为空;空则为真,不空则假;
    -n "STRING":判断指定的字符串是否不空;不空则真,空则为假;

    注意:
    (1) 字符串要加引用;
    (2) 要使用[[ ]];

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

    4. 组合测试条件:
    逻辑运算:
    第一种方式:
    COMMAND1 && COMMAND2
    COMMAND1 || COMMAND2
    ! COMMAND

    [ -O FILE ] && [ -r FILE ]

    第二种方式:
    EXPRESSION1 -a EXPRESSION2
    EXPRESSION1 -o EXPRESSION2
    ! EXPRESSION

    [ -O FILE -a -x FILE ]

    练习:将当前主机名称保存至hostName变量中;
    主机名如果为空,或者为localhost.localdomain,则将其设置为www.magedu.com;

    hostName=$(hostname)

    [ -z "$hostName" -o "$hostName" == "localhost.localdomain" -o "$hostName" == "localhost" ] && hostname www.magedu.com

  • 相关阅读:
    redis之(十二)redis数据的持久化
    redis之(十一)redis实现缓存的功能
    redis之(十)redis实现消息中间件的功能
    redis之(九)redis的事务机制
    SQL关于IN和EXISTS的用法和区别的比较
    mysql explain extra理解
    mysql explain rows理解
    mysql explain中key_len值的说明
    redis常见重要性能指标数据分析和相关问题解决方案
    java.lang.UnsupportedOperationException解决方法!!!
  • 原文地址:https://www.cnblogs.com/demonzk/p/6514282.html
Copyright © 2020-2023  润新知