zoukankan      html  css  js  c++  java
  • 退出状态、测试(test or [])、操作符、[]与[[]]区别

    一、退出状态

    系统每执行一个命令,都会返回一个退出状态,若返回退出状态为0,表示命令执行成功,

    若返回退出状态不为0,表示命令执行有错误。

    echo  $? 可以打印出退出状态。

    例如:ls   

               echo $?

    状态值 含义
    0 命令执行成功,没有错误
    1-125 运行失败,脚本命令、系统命令错误或参数传递错误
    126 有该命令,但无法执行
    127 没有该命令
    >128 命令被系统强制结束

    二、测试test或[]

    测试命令用于判断表达式的真假。测试条件为真,返回值0;测试条件为假,返回值不为0。

    这与C语言0为假有区别。

    格式 test expression 或

    [  expression  ]

    备注:"[" 后面与 "]"  前面的空格是必须的,否则会报错

    三、整数比较运算符

    格式: test "num1" numeric_operator "num2" 或

    [  "num1" numeric_operator "num2"  ]

    例如:[ 1 -eq 1]  测试结果为0

    整数比较符  含义
    num1 -lt num2 判断整数num1是否小于整数num2,如果整数num1小于num2,测试结果为真(0)
    num1 -gt num2 判断整数num1是否大于整数num2,如果整数num1大于num2,测试结果为真(0)
    num1 -eq num2 判断整数num1是否等于整数num2,如果整数num1等于num2,测试结果为真(0)
    num1 -le num2 判断整数num1是否小于等于整数num2,如果整数num1等于num2,测试结果为真(0)
    num1 -ge num2 判断整数num1是否大于等于整数num2,如果整数num1等于num2,测试结果为真(0)
    num1 -ne num2 判断整数num1是否不等于整数num2,如果整数num1不等于num2,测试结果为真(0)

    四、字符串运算符

    格式 :test "string1" operator  "sting2" 或

    [  "string1" operator  "sring2"  ]  

    test   operator "string1"  或

    operator  "string1"  ]  

    例如:[ "ab"  ==  "ab" ]  测试结果为0

                a="dfds"

               [  -z  "$a"]  测试结果不为0

               

    字符串运算符  含义
    string1 == string2  (==两边空格不要省略) 判断字符串string1是否等于字符串string2,如果整数string1等于string2,测试结果为真(0)
    string1 != string2   (!=两边空格不要省略) 判断字符串string1是否不等于字符串string2,如果整数string1等于string2,测试结果为真(0)
    string1 判断字符串string1是否不为空,如果整数string1不为空,测试结果为真(0)
    -n string1 判断字符串string1是否不为空,如果整数string1不为空,测试结果为真(0)
    -z string1 判断字符串string1是否为空,如果整数string1为空,测试结果为真(0)

    五、文件运算符

    格式 :test  operator file 或

    [ operator  file  ]  

    例如:ls (如果有普通文件a.csv)

               [ -f a.csv] 测试结果为0

              

    文件运算符  含义
    -d file 判断file是否为目录,如果file是目录,测试结果为真(0)
    -f file 判断file是否为普通文件,如果file是普通文件,测试结果为真(0)
    -e file 判断file是否为存在,如果file是存在,测试结果为真(0)
    -r file 判断file是否可读,如果file可读,测试结果为真(0)
    -w file 判断file是否可写,如果file可写,测试结果为真(0)
    -x file 判断file是否可执行,如果file可执行,测试结果为真(0)
    -s file 判断file长度是否不为0,如果file长度是否不为0,测试结果为真(0)
    -L file 判断file是否符号化链接,如果file是符号化链接,测试结果为真(0)

    六、逻辑运算符

    例如:[ 1 -eq 1 -a 2 -eq 2],测试结果为0(真)

               [ ! 1 -eq 1 ],测试结果不为0(假)

              

    逻辑运算符  含义
    ! expression 如果expression为假,测试结果为真(0)
    expression1 -a expression2 如果expression1和expression2同时为真,测试结果为真(0)
    expression1 -o expression2 如果expression1或expression2其中一个为真,测试结果为真(0)

     

    七、[[]]与[]区别

    这是内置在shell中的一个命令,它就比刚才说的[]强大的多了。支持字符串的模式匹配(使用=~操作符时甚至支持shell的基本和扩展正则表达式)。逻辑组合可以不使用[]的-a,-o而使用&& ||。
    支持通配符,比如[[ hello == hell? ]],结果为真。

    注意:使用[]和[[]]的时候不要吝啬空格,每一项两边都要有空格,[[ 1 == 2 ]]的结果为“假”,但[[ 1==2 ]]的结果为“真”!

    例如:

    [[ hello =~ he*llo]] ,测试结果为0(正则表达式)

    [[hello == hell?]] ,测试结果为0(通配符)

  • 相关阅读:
    Portal嵌入SAPUI5应用程序
    定义Portal显示规则
    定义SAP Portal Url别名
    SAP EP 设置Portal别名安全模式
    MES系统在小批量电子行业生产管理中的应用
    建智能工厂,可从这6个方面着手!
    APS系统对制造企业到底有多重要?看完这5点你就明白了
    新手入门必看:VectorDraw 常见问题整理大全(二)
    轻量级流程图控件GoJS示例连载(一):最小化
    小批量、多品种生产模式如何快速响应客户交期
  • 原文地址:https://www.cnblogs.com/97lzc/p/11218302.html
Copyright © 2011-2022 走看看