zoukankan      html  css  js  c++  java
  • shell

    test

    语法:test 表达式 或者 [ ]
    test命令用于检查某个条件表达式是否成立,他可以进行数值、字符、文件三个方面的测试

    1. 可以使用[]一对方括号替代test命令,这是test命令的简写形式
    2. 使用方括号形式的简写时,需要注意方括号內的表达式前后必须要有空格,否则将会报错
    3. 如果省略表达式,返回false
    4. 如果表达式为单参数或者时将返回true
    5. 如果表达式的值为true返回0,如果表达式的值为false返回1
    [root@bookcoins ~]# [-d /]
    -bash: [-d: command not found
    [root@bookcoins ~]# [ -d /]
    -bash: [: missing `]'
    [root@bookcoins ~]# [ -d / ]
    [root@bookcoins ~]# test
    [root@bookcoins ~]# echo $?
    1
    [root@bookcoins ~]# [  ]
    [root@bookcoins ~]# echo $?
    1
    [root@bookcoins ~]# test -d
    [root@bookcoins ~]# echo $?
    0
    [root@bookcoins ~]# [ -b ]
    [root@bookcoins ~]# echo $?
    0
    

    主要用法如下:

    * FILE type tests::             -[bcdfhLpSt]
    * Access permission tests::     -[gkruwxOG]
    * FILE characteristic tests::   -e -s -nt -ot -ef
    * String tests::                -z -n = !=
    * Numeric tests::               -eq -ne -lt -le -gt -ge
    * Connectives for test::        ! -a -o
    

    test file type

    测试文件类型

    -b FILE 如果文件存在且为块特殊文件则为真 
    -c FILE 如果文件存在且为字符特殊文件则为真
    -d FILE 如果文件存在且目录则为真 
    -f FILE 如果文件存在且为普通文件则为真 
    -h FILE 如果文件存在且为符号链接文件则为真 
    -L FILE 如果文件存在且为符号链接文件则为真 
    -p FILE 如果文件存在且为命名管道则为真 
    -S FILE 如果文件存在且为套接字文件则为真 
    -t FD   如果文件描述符是在终端打开的则为真 
    

    test file permission

    测试文件权限

    -g FILE 如果文件存在且设置了SGID位则为真 
    -k FILE 如果文件存在且设置了文件的粘着位则为真
    -r FILE 如果文件存在且可读则为真 
    -u FILE 如果文件存在且设置了SUID位则为真 
    -w FILE 如果文件存在且可写则为真 
    -x FILE 如果文件存在且可执行则为真 
    -O FILE 如果文件存在且属于有效的用户则为真 
    -G FILE 如果文件存在且属于有效的用户组则为真 
    

    test file characteristic

    测试文件特性

    -e FILE 如果文件存在则为真 
    -s FILE 如果文件存在且文件大小不为0则为真 
    FILE1 -nt FILE2 如果文件1比文件2新(根据修改时间确定)或者文件1存在而文件2不存在则为真 
    FILE1 -ot FILE2 如果文件1比文件2旧(根据修改时间确定)或者文件2存在而文件1不存在则为真 
    FILE1 -ef FILE2 如果文件1和文件2属于相同的设备和inode节点则为真(即文件1和文件2是彼此的硬链接) 
    

    test string

    -z STRING 如果字符串的长度为0则为真 
    -n STRING 如果字符串的长度不为0则为真 
    STRING1 = STRING2 如果两个字符串相等则为真 
    STRING1 != STRING2 如果两个字符串不相等则为真 
    

    测试字符串,在shell中使用引用字符串测试时需要使用双引号,这个地方需要引起重视,可以从下面这个例子体会下:

    [testd@bookcoins ~]$ echo $var1
    
    [testd@bookcoins ~]$ test -n $var1
    [testd@bookcoins ~]$ echo $?
    0
    [testd@bookcoins ~]$ test -n "$var1"
    [testd@bookcoins ~]$ echo $?
    1
    

    test numberic

    测试数值,参数必须是数字

    ARG1 -eq ARG2 如果数值1等于数值2则为真 
    ARG1 -ne ARG2 如果数值1不等于数值2则为真 
    ARG1 -lt ARG2 如果数值1小于数值2则为真 
    ARG1 -le ARG2 如果数值1小于等于数值2则为真 
    ARG1 -gt ARG2 如果数值1大于数值2则为真 
    ARG1 -ge ARG2 如果数值1大于等于数值2则为真 
    

    connectives for test

    连接测试,非与或

    ! EXPR 如果表达式的值为false则为真 
    EXPR1 -a EXPR2 如果表达式1表达2的值都为true则为真 
    EXPR1 -o EXPR2 如果表达式1或者表达式2的值为true则为真 
    
  • 相关阅读:
    直接插入排序
    合并排序--分治法思想
    scanf printf函数返回值
    转自CSDN,关于状态机
    关于制表符
    网上找的一篇博文,原文搞错了,应该是 ,本文已改正!——回车CR和换行line feed
    再看c语言之getchar/putchar
    使用FL2440之问题1
    Java:String、StringBuffer和StringBuilder的区别
    编译哈工大语言技术平台云LTP(C++)源码及LTP4J(Java)源码
  • 原文地址:https://www.cnblogs.com/spinxy/p/6054957.html
Copyright © 2011-2022 走看看