zoukankan      html  css  js  c++  java
  • Shell中的测试命令

    Shell中有多种针对文件、字符串、数值的条件测试命令,用于检查某个条件是否成立。下面分别进行讲解。

    三种测试的命令的表达方式

    • test,语法格式为:test <condition>
    • [ ],语法格式为:[ <condition> ]
    • [[ ]],语法格式为:[[ <condition> ]]
      前两种的条件格式一样,可以通用,仅仅是写法的不同。但双中括号形式是前两者的扩展,可以在测试语句中使用与 &&、或 ||来同时对几种条件进行测试,而在单中括号或test中则需要利用-a和-o来表示与和或,且与或非的优先级依次递减。

    三种测试用途

    一、数值测试

    参数说明
    -eq等于则为真
    -ne不等于则为真
    -gt大于则为真
    -ge大于等于则为真
    -lt小于则为真
    -le小于等于则为真

    实例

    [root@host]# a=5
    [root@host]# test $a -eq 5
    0
    [root@host]# [ $a -gt 8 ] &&echo 0 ||echo 1
    1
    [root@host]# [[ $a -le 5 ]] &&echo 0 ||echo 1
    0
    

    二、字符串测试

    1. 对于字符串比较测试,务必记住无论是常量字符串还是变量应用一定一定要在两端加双引号.
    2. 在比较关系符两端一定要加空格。
    参数说明
    =等于则为真(=两端要加空格)
    !=不等于则为真(=两端要加空格)
    >大于则为真(仅用于[[ ]],加空格)
    <小等则为真(仅用于[[ ]],加空格)
    -n字符串长度不为0则为真
    -z字符串为空则为真

    实例

    [root@host]# a="leon"
    [root@host]# test -n "$a" &&echo 0 ||echo 1
    0
    [root@host]# [ "$a" = "leo" ] &&echo 0 ||echo 1
    1
    [root@host]# [[ "$a" > "leo" ]] &&echo 0 ||echo 1
    0
    

    三、文件测试

    参数说明
    -e文件存在则为真
    -f文件存在,且为普通文件则为真
    -d文件存在,且为目录文件则为真
    -L文件存在,且为链接文件则为真
    -c文件存在,且为字符设备文件则为真
    -b文件存在,且为块设备文件则为真
    -r文件存在,且为可读文件则为真
    -w文件存在,且为可写文件则为真
    -x文件存在,且为可执行文件则为真
    -s文件存在,且为非空文件则为真

    实例

    [root@host]# a=/bin/ls
    [root@host]# test -x "$a" &&sh $a
    a.c   b.c   d.sh 
    [root@host]# [[ -x "$a" && -s "$a" ]] &&echo0||echo1
    0
    
  • 相关阅读:
    数独小算法,测试通过(Java)
    OC运行时和方法机制笔记
    AlertView点击确定后再执行后面的代码
    对第三方库集成方式的分析
    当程序进入后台时执行长时间代码
    iOS开发之GCD使用总结
    缓存网络请求的结果
    防止 NSTimer retain 作为 target 的 self
    获取设备唯一码
    原生网络请求以及AFN网络请求/异步下载
  • 原文地址:https://www.cnblogs.com/leon1124/p/14039840.html
Copyright © 2011-2022 走看看