• shell语法 07-shell if条件测试和比较


    if条件测试常用的语法

    • test <测试表达式>
    • [ <测试表达式> ]
    • [[ <测试表达式> ]]
    • ((<测试表达式>))

    test命令和[]测试操作符

    • test <测试表达式>
    • [ <测试表达式> ]

    (这两种语法是等价的)

    测试操作符 全拼 说明
    -d directory 文件存在且为目录
    -f file 文件存在且为普通文件
    -e exist 文件存在
    -r read 文件存在且可读
    -s size 文件存在且文件大小不为0
    -w write 文件存在且可写
    -x exexutable 文件存在且可执行
    -L link 文件存在且为链接文件
    f1 -nt f2 newer than 文件f1比文件f2新
    f1 -ot f2 olderthan 文件f1比文件f2旧
    -n not zero 字符串的长度不为0
    -z zero 字符串的长度为0
    s1 = s2 字符串1等于字符串2
    s1 != s2 字符串1不等于字符串2
    -eq equal 相等
    -ne not equal 不相等
    -gt greater than 大于
    -ge greater equal 大于等于
    -lt less than 小于
    -le less equal 小于等于
    -a and
    -o or
    ! not

    范例:

    test -f /data/test.sh && echo true || echo false
    [ -f /data/test.sh ] && echo true || echo false
    
    • 用[]测试变量时,如果被测试的变量不加双引号,那么测试结果可能会是不正确的:
    file1=/etc/passwd
    [ -f "$file1" ] && echo 1 || echo 0
    
    如果是文件实体路径,那么加引号与不加引号的结果是一样的:
    [ -f "/etc/passwd" ] && echo 1 || echo 0
    [ -f /etc/passwd ] && echo 1 || echo 0
    

    [[]]测试操作符

    • [[ <测试表达式> ]]
    在[[]]中可以使用通配符等进行模式匹配
    [[ ! $a =~ [1-3] ]] && echo 1 || echo 0
    
    测试操作符 全拼 说明
    -d directory 文件存在且为目录
    -f file 文件存在且为普通文件
    -e exist 文件存在
    -r read 文件存在且可读
    -s size 文件存在且文件大小不为0
    -w write 文件存在且可写
    -x exexutable 文件存在且可执行
    -L link 文件存在且为链接文件
    f1 -nt f2 newer than 文件f1比文件f2新
    f1 -ot f2 olderthan 文件f1比文件f2旧
    -n not zero 字符串的长度不为0
    -z zero 字符串的长度为0
    s1 = s2 字符串1等于字符串2
    s1 != s2 字符串1不等于字符串2
    ==/= equal 相等
    != not equal 不相等

    | greater than | 大于
    -ge | greater equal | 大于等于
    < | less than | 小于
    -le | less equal | 小于等于
    && | and | 与
    || | or | 或
    ! | not | 非


    (())测试操作符

    • ((<测试表达式>))
      • 常用与计算
      • 对于整数的关系运算,也可以使用Shell的算术运算符(())
    ((3>2)) && echo 1 || echo 0
    ((3!=2&&5==5)) && echo 1 || echo 0
    
  • 相关阅读:
    USES_CONVERSION宏(转)
    推送本地仓库至多个远程仓库(转)
    .gitignore的使用
    重命名分支
    不支持尝试执行的操作——————MFC窗口打开错误
    error C1010:在查找预编译头文件时遇到意外的文件结尾——————vs错误
    抓边(一)——————————————使用halcon测量助手
    CString, string, char *之间的相互转换(转)
    css模块化
    继承、原型链、在组件开发上的应用
  • 原文地址:https://www.cnblogs.com/liangjingfu/p/9419493.html
Copyright © 2020-2023  润新知