zoukankan      html  css  js  c++  java
  • bash脚本条件测试总结

    一、if语句的结构

    分为以下三种:单分支、双分支、多分支

    单分支if语句
    if CONDITION is True; then
        分支
    fi
    
    双分支if语句
    if CONDITION is True; then
        分支
    else
        分支
    fi
    
    多分支if语句
    if CONDITION is True; then
        分支
    elif CONDITION is True; then
        分支2
    ...
    else
        分支n
    fi
    

    二、测试形式

    分为以下两种:命令执行状态结果形式、条件表达式形式

    1. 命令的执行状态结果,即命令执行成功与否:
    if COMMAND &> /dev/null;then  
    #一定要注意此处的命令不带括号或单引号
    
    2. 条件表达式

    分为以下两种:命令形式和关键字形式

    (1)命令形式(其本质同上1,表达式本身也不能应用于测试,下述的test和[]形式也是命令,类似.表示source命令)

    (a) test EXPRESSION

    if test EXPRESSION; then
    

    (b) [ EXPRESSION ]

    if [ EXPRESSION ]; then #一定要注意中括号前后有空格
    
    (2) 关键字形式

    (c) [[ EXPRESSION ]]

    if [[ EXPRESSION ]]; then 
    #一般用于字符串测试,尤其是模式匹配测试
    

    三、测试方法(测试种类)

    分为以下三种:整数测试、字符串测试、文件测试

    1、整数测试

    -ge, -gt, -le, -lt, -eq, -ne
    (其实也可以用>等来表示,只是得加双小括号)

    2、字符串测试;

    双目:>, <, ==, != , ~= (用于模式匹配)
    单目:-z (真空,非空假),-n(非空真,空假)

    3、文件测试

    -e $file: 是否存在,存在则为真;
    -a $file: 同上,弃用;
    -f $file: 文件是否存在,且为普通文件;
    -d $file: 是否存在,且为目录;
    -h $file: 是否存在,且为符号链接文件;
    -l $file: 同上;
    -b $file: 是否存在,且为块设备文件;
    -S $file: 是否存在,且为套接字文件;
    -c $file: 是否存在,且为字符设备文件;
    -p $file: 是否存在,且为管道文件;

    -r $file: 当前用户是否对此文件拥有读权限;
    -w $file: 当前用户是否对此文件拥有写权限;
    -x $file: 当前用户是否对此文件拥有执行权限;
    -u $file: 文件是否拥有suid权限;
    -g $file: 文件是否拥有sgid权限;
    -k $file: 文件是否拥有sticky权限;

    -O $file: 当前用户是否为文件的属主;
    -G $file: 当前用户是否属于文件的属组;

    -N $file: 文件自从上一次被读取之后,是否被修改过;
    $f1 -nt $f2:文件f1是否比文件f2新;
    $f1 -ot $f2:文件f1是否比文件f2旧;
    $f1 -ef $f2:文件f1和文件f2是否为同一个文件的硬链接;
    上述所有文件测试条件都支持!取反。

  • 相关阅读:
    利用密钥通过ssh互访
    rsync参数及通信
    cacti 安装
    地区排名脚本 一千三百多行代码
    调用分隔符的数组。
    select case when
    jquery 设置select 默认值
    常见的分析函数
    oracle分析函数 之分组累加求和
    ORACLE的表被 另一个用户锁定,如何解除..
  • 原文地址:https://www.cnblogs.com/bolenzhang/p/7798835.html
Copyright © 2011-2022 走看看