zoukankan      html  css  js  c++  java
  • shell运算符之 关系运算符,算数运算符,布尔运算符,字符串运算符和文件测试运算符

      shell运算符有很多,关系运算符,算数运算符,布尔运算符,字符串运算符和文件测试运算符

    1,算术运算符

    原声bash 不支持简单的算术运算,可以使用expr 工具 

    两点注意:

    • 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
    • 完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边。

    #!/bin/bash
    a=10
    b=20
    rst=`expr 2 + 2`
    echo '2+2 =' ${rst}
    rst=`expr 2 - 2`
    echo '2-2 =' ${rst}
    rst=`expr 2 * 2`
    echo '2*2 = '${rst}
    rst=`expr 2 / 2`
    echo '2/2 = '${rst}
    rst=`expr 3 % 2`
    echo '3%2 = '${rst}

    output :

    2+2 = 4
    2-2 = 0
    2*2 = 4
    2/2 = 1
    3%2 = 1

    关系运算符

    关系运算符只支持数字部支持字符串


    -eq  检测两个数是否相等  相等返回true

    -ne  检测两个数是否相等 不相等返回true

     -gt  检测左边的数是否大于右边的,如果是,则返回true

    -lt    检测左边的数是否小于右边的,如果是,则返回true

    -ge  检测左边的数是否大于等于右边,如果是则返回true

    -le  检测左边的数是否小于等于右边的,如果是则返回true

     例子

    if [ $a -lt $b ]
    then
    echo "a=${a} b=${b} a<b"
    fi

    a=20
    b=10
    if [ $a -gt $b ]
    then
    echo "a=${a} b=${b} a>b"
    fi

    a=20
    b=20
    if [ $a -eq $b ]
    then
    echo "a=${a} b=${b} a==b"
    fi


    a=10
    b=20
    if [ $a -ne $b ]
    then
    echo "a!=b"
    fi


    if [ $a -ge $b ]
    then
    echo "a>=b"

    if [ $a -le $b ]
    then
    echo "a<=b"关系运算符列表

    fi

    布尔运算符

    !    非运算  [!false]

    -o    或运算   [  $a -lt 200 -o $b -gt 100 ]

    -a    与运算  [ $a -lt 200 -a $b -gt 100 ]

    字符串运算符

    =  检测两个字符串是否相等,相等返回 true。[ $a = $b ] 返回 false。

    !=  检测两个字符串是否相等,不相等返回 true。[ $a != $b ] 返回 true。

    -z  检测字符串长度是否为0,为0返回 true。[ -z $a ] 返回 false。

    -n  检测字符串长度是否为0,不为0返回 true。[ -z $a ] 返回 true。

    str  检测字符串是否为空,不为空返回 true。[ $a ] 返回 true。

    文件测试运算符

    文件测试运算符列表
    操作符说明举例
    -b file 检测文件是否是块设备文件,如果是,则返回 true。 [ -b $file ] 返回 false。
    -c file 检测文件是否是字符设备文件,如果是,则返回 true。 [ -b $file ] 返回 false。
    -d file 检测文件是否是目录,如果是,则返回 true。 [ -d $file ] 返回 false。
    -f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 [ -f $file ] 返回 true。
    -g file 检测文件是否设置了 SGID 位,如果是,则返回 true。 [ -g $file ] 返回 false。
    -k file 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 [ -k $file ] 返回 false。
    -p file 检测文件是否是具名管道,如果是,则返回 true。 [ -p $file ] 返回 false。
    -u file 检测文件是否设置了 SUID 位,如果是,则返回 true。 [ -u $file ] 返回 false。
    -r file 检测文件是否可读,如果是,则返回 true。 [ -r $file ] 返回 true。
    -w file 检测文件是否可写,如果是,则返回 true。 [ -w $file ] 返回 true。
    -x file 检测文件是否可执行,如果是,则返回 true。 [ -x $file ] 返回 true。
    -s file 检测文件是否为空(文件大小是否大于0),不为空返回 true。 [ -s $file ] 返回 true。
    -e file 检测文件(包括目录)是否存在,如果是,则返回 true。 [ -e $file ] 返回 true。
  • 相关阅读:
    druid连接池的配置和应用
    Maven的Unknow错误
    实践——WebStorm安装(2021/01/30)(更新2021/07/14,添加激活码和习惯设置)
    vue3如何编写挂载DOM的插件
    npm 安装源
    一个node项目的docker镜像制作
    圣女
    基于计算机视觉的车牌识别系统(一)
    vue3 兄弟组件传参mitt
    laravel-admin 加载样式失败
  • 原文地址:https://www.cnblogs.com/techdreaming/p/5202216.html
Copyright © 2011-2022 走看看