• shell条件判断


    1.判断语法

    a)  test 条件表达式

    b)  [ 条件表达式 ]

    c)  [[ 条件表达式 ]]        可匹配正则 =~

    d)  判断后执行多个命令

    [  条件1 ] && {
              命令1
              命令2
    }

    例如:

    [ 1 -eq 2 ]&&{
        echo aa;
        echo bb;
    }||{
        echo cc
        echo dd
    }

    man test去查看,很多的参数都用来进行条件判断

    2.文件类型判断

    -e 是否存在 不管是文件还是目录,只要存在,条件就成立
    -f 是否为普通文件
    -d 是否为目录
    -S socket
    -p pipe
    -c character
    -b block
    -L 软link

    3.文件内容判断

    -s 是否为非空文件

    ! -s 表示空文件

    4.文件权限判断

    -r  当前用户对其是否可读
    -w 当前用户对其是否可写
    -x 当前用户对其是否可执行
    -u 是否有suid
    -g 是否sgid
    -k 是否有t位

    5.两个文件的比较判断

    file1 -nt file2	 比较file1是否比file2新
    file1 -ot file2	 比较file1是否比file2旧
    file1 -ef file2	 比较是否为同一个文件,或者用于判断硬连接,是否指向同一个inode

    6.整数之间的判断

    -eq	 相等
    -ne	 不等
    -gt	 大于
    -lt  	 小于
    -ge	 大于等于
    -le	小于等于

    7.字符串之间的判断

    -z  是否为空字符串 字符串长度为0,就成立
    -n  是否为非空字符串 只要字符串非空,就是成立
    string1 = string2    是否相等           --等号两边要有空格
    string1 != string2   不等
    ! 结果取反

    注意

    [ "$1" = "abc" ]       --判断字符是否相等,变量也要用双引号

    8.多重条件判断

    逻辑判断符号:

    -a 和 && 逻辑与

    只有两个条件都成立,整个大条件才成立

    [ 1 -eq 1 ] && [ 2 -ne 3 ]

    [ 1 -eq 1 -a 2 -ne 3 ]

    -o 和 || 逻辑或

    只要其中一个条件成立,整个大条件就成立

    [ 1 -eq 1 -o 2 -ne 2 ]

    [ 1 -eq 1 ] || [ 2 -ne 2 ]

    ! 逻辑非 优先级最低

    -a 优先级 比 -o 优先级要高

    [[]] 和(())中可以使用&& || 不能使用 -a -o

     

    9.实例

    # [ $(id -u) -eq 0 ] && echo "当前是超级用户"            --id -u  username  可以查看用户id

    $ [ $UID -eq 0 ] && echo "当前是超级用户" || echo "you不是超级用户"

    # ((1==2));echo $?      --C语言风格的数值比较

    # ((1>=2));echo $?

    题目:输入一个路径,判断路径是否存在,而且输出是文件还是目录,如果是链接文件,还得输出是有效的连接还是无效的连接

    思路:链接文件也属于文件,所以先判断链接文件,再去判断是否为文件

     

     #!/bin/bash
    read -p "Input your path:" path
    if [ -e $path -a -L $path ];then 
        echo "$0 is link file"
    elif [ ! -e $path ] && [ -L $path ];then
        echo "$0 is not effctive link file"
    elif [ -d $path ];then
        echo "$0 is a dirctory"
    elif [ -f $path ];then
        echo " $0 is file"
    else
        echo "$0 is other file"
    fi

    ls -L  dir                   -L可以判断软链接

    --无效链接用-e判断会不存在

    -L   如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录;

    本文作者:fcing
    本文出处:https://www.cnblogs.com/fcing
    版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议。转载请注明出处!
  • 相关阅读:
    jmeter4-数据库性能测试
    jmeter2-接口性能测试
    jmeter1-测试流程
    jmeter-beanshell随机取数组一项
    最强MySQL数据库设计规范... (转载)
    Python词云
    adb常用命令
    jmeter线程组多个请求之间的参数关联
    VisualVM使用与调优案例
    mysql调优工具tuning-primer.sh的使用
  • 原文地址:https://www.cnblogs.com/fcing/p/9382418.html
Copyright © 2020-2023  润新知