• if的条件表达式


    常用的:
    [ -a FILE ] 如果 FILE 存在则为真。
    [ -d FILE ] 如果 FILE 存在且是一个目录则返回为真。
    [ -e FILE ] 如果 指定的文件或目录存在时返回为真。
    [ -f FILE ] 如果 FILE 存在且是一个普通文件则返回为真。
    [ -r FILE ] 如果 FILE 存在且是可读的则返回为真。
    [ -w FILE ] 如果 FILE 存在且是可写的则返回为真。(一个目录为了它的内容被访问必然是可执行的)
    [ -x FILE ] 如果 FILE 存在且是可执行的则返回为真。

    条件表达式 意义
    1.文件类检测,例如[ -e /tmp/a.log ]。如非特别说明,则所有文件类操作都会追踪到软链接的源文件。
    -e file 文件是否存在(exist)
    -f file 文件是否存在且为普通文件(file)
    -d file 文件是否存在且为目录(directory)
    -b file 文件是否存在且为块设备block device
    -c file 文件是否存在且为字符设备character device
    -S file 文件是否存在且为套接字文件Socket
    -p file 文件是否存在且为命名管道文件FIFO(pipe)
    -L file 文件是否存在且是一个链接文件(Link)
    2. 文件属性检测,如test -r /tmp/a.log。如非特别说明,则所有文件类操作都会追踪到软链接的源文件。
    -r file 文件是否存在且当前用户可读
    -w file 文件是否存在且当前用户可写
    -x file 文件是否存在且当前用户可执行
    -u file 文件是否存在且设置了SUID
    -g file 文件是否存在且设置了SGID
    -k file 文件是否存在且设置了sbit(sticky bit)
    -s file 文件是否存在且大小大于0字节,即用于检测文件是否为非空白文件
    -N file 文件是否存在,且自上次read后是否被modify
    3. 两个文件之间的比较,如:test file1 -nt file2
    file1 -nt file2 (newer than)判断file1是否比file2新
    file1 -ot file2 (older than)判断file1是否比file2旧
    file1 -ef file2 (equal file)判断file2与file2是否为同一文件,可用在判断hard link的判定上。主要意义在判定,两个文件是否均指向同一个分区上的同一个inode
    4. 两个整数之间的判定,支持正负数,但不支持小数。例如test n1 -eq n2
    int1 -eq int2 两数值相等(equal)
    int1 -ne int2 两数值不等(not equal)
    int1 -gt int2 n1大于n2(greater than)
    int1 -lt int2 n1小于n2(less than)
    int1 -ge int2 n1大于等于n2(greater than or equal)
    int1 -le int2 n1小于等于n2(less than or equal)
    5. 判定字符串
    -z string (zero)判定字符串是否为空?若string为空字符串,则为true
    -n string 判定字符串是否非空?若string为空字符串,则false。注:-n可省略
    string1 = string2 string1 == string2 string1和string2是否相同。相同则返回true。"=="和"="等价,但"="可移植性更好
    str1 != str2 str1是否不等于str2,若不等,则返回true
    str1 > str2 str1字母顺序是否大于str2,若大于,则返回true
    str1 < str2 str1字母顺序是否小于str2,若小于,则返回true
    6.逻辑运算符,例如:test -r filename -a -x filename
    -a或&& (and)两表达式同时为true时才为true。"-a"只能在test或[]中使用,&&只能在[[]]中使用
    -o或|| (or)两表达式任何一个true则为true。"-o"只能在test或[]中使用,||只能在[[]]中使用
    [ ! EXPR ] 对表达式取反
    ( ) 用于改变表达式的优先级,为了防止被shell解析,应该加上反斜线转义()
    [ ] || [ ] 用OR来合并两个条件
    [ ] && [ ] 用AND来合并两个条件

    忘记参考的哪儿了,请见谅

  • 相关阅读:
    冲刺 09
    冲刺08
    个人作业-买书
    冲刺07
    冲刺 06
    软件工程 寻找小水王
    冲刺04
    冲刺 03
    冲刺 02
    冲刺3
  • 原文地址:https://www.cnblogs.com/qiaozhuangshi/p/11762532.html
Copyright © 2020-2023  润新知