• Bash的条件表达式求值


     Bash的条件控制允许两种类型:1)命令的成功或失败 2)逻辑表达式的真假
    这两种类型都可以通过退出状态($?)来检验,$?=0为真,否则为假

    一、命令的成功或失败

    通过查看$?值
    $echo $?

    二、逻辑表达式求值

    可以用test命令,[ ]、 [ [ ] ]
    [ ]是test命令的变形
    test命令和[ ]不能使用正则表达式,[ [ ] ] 可以使用正则表达式

    1、字符串判断

    $name=Tom
    $friend=Jose
    $test name != Tom
    $echo $?
    1

    $[ $name = Tom ]
    $echo $?
    0

    $[ $name == Tom -a "$friend" == "Jose" ]
    $echo $?
    1

    $[ [ $name == [Tt]om ] ]
    $echo $?
    0

    $[ [ $name == [Tt]om && $friend == "Jose" ] ]
    $echo $?
    0

     if [ "$name" = "" ]
    then

    command(s)

    fi

    注意:
    1)第一个括号 [ 后面必须有空格,第二个括号 ] 前必须有空格,=、!=、==两边必须有空格
    2)字符串比较时,可以使用一个或两个等号,因此,=也可换成==
    3)[ ]中逻辑操作用-a,-o; [ [ ] ] 中逻辑操作用&&,||
    4)和空字符串比较,注意变量也要加上双引号;如果不是和空字符串比较,则变量不用加双引号 

    2、整数判断

    用test, [ ], [ [ ] ]
    还可以用(( )),更方便,可以直接用比较运算符,变量前不用加$

    $x=5
    $y=20
    $test $x -gt $y
    $echo $?
    1

    $[ $x -gt $y ]
    $echo $?
    1

    $[ [ $x -gt $y ] ]
    $echo $?
    1

    $((x>y))
    $echo $?
    1

    $((x>5 && y==20))
    $echo $?
    1

    三、小结

    1、字符串和整数:test、[ ]、[ [ ] ] 既可以用于字符串的比较,也能用于整数的比较;而(( ))仅能用于整数的比较
    2、正则表达式:test、[ ]不能使用正则表达式; [ [ ] ]可以使用正则表达式
    3、逻辑操作符:test、[ ]使用-a, -o逻辑操作符;[ [ ] ] 、(( ))使用&&、||逻辑操作符
    4、空格:test、[ ]、[ [ ] ] 中比较操作符前后、[和以及]和之前必须有空格;(( ))没有要求
    5、建议:字符串比较用[ [ ] ] 、整数比较用(( )) 

    =-=-=-=-=
    Powered by Blogilo

  • 相关阅读:
    查询手机内联系人
    加载媒体库里的音频
    用ContentProvider获取通讯录联系人
    TensorFlow学习笔记:保存和读取模型
    如何「优雅」地标数据
    Bagging, Boosting, Bootstrap
    3D中的旋转变换
    PCA算法浅析
    SQL Server数据库邮件配置
    浅谈checkpoint与内存缓存
  • 原文地址:https://www.cnblogs.com/pandachen/p/4771133.html
Copyright © 2020-2023  润新知