• shell 运算符


    1 expr

    1.1 介绍

    expr 是 evaluate expressions 的缩写,译为“求值表达式”。Shell expr 是一个功能强大,并且比较复杂的命令,它除了可以实现整数计算,还可以结合一些选项对字符串进行处理,例如计算字符串长度、字符串比较、字符串匹配、字符串提取等, 后续讲解。

    1.2 expr语法

    计算语法

    expr 算术运算符表达式
    
    • 1

    注意: 运算表达式

    获取计算结果赋值给新变量语法

    result=`expr 算术运算符表达式`
    
    • 1

    1.3 demo

    #!/bin/bash
    result=`expr 2 + 2`
    echo "result :${result}"
    
    • 1
    • 2
    • 3

    算术运算符介绍

    下表列出了常用的算术运算符,假定变量 a 为 1,变量 b 为 2:

    运算符说明举例
    +加法expr $a + $b 结果为 3
    -减法expr $a - $b 结果为 -1
    *乘法expr $a \* $b 结果为 2
    /除法expr $b / $a 结果为 2
    %取余expr $b % $a 结果为 0
    =赋值a=$b 将把变量 b 的值赋给 a

    四则运算中如果使用了(), 也需要转义 \( 1 + 1 \)

    #!/bin/bash
    read -p "输入两个整数:" a b
    echo "a=${a} b=${b}"
    
    rs1=`expr ${a} + ${b}`
    echo "a + b = ${rs1}"
    
    rs2=`expr ${a} - ${b}`
    echo "a - b = ${rs2}"
    
    rs3=`expr ${a} \* ${b}`
    echo "a * b = ${rs3}"
    
    rs4=`expr ${a} / ${b}`
    echo "a / b = ${rs4}"
    
    rs5=`expr ${a} % ${b}`
    echo "a % b = ${rs5}"
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    在这里插入图片描述

    2 整数比较运算符

    2.1 语法

    下表列出了常用的比较运算符,假定变量 a 为 1,变量 b 为 2:

    运算符说明举例
    -eqequals 检测两个数是否相等,相等返回 0, 否则返回1。[ $a -eq $b ] 返回 1。
    -nenot equals检测两个数是否不相等,不相等返回 true。[ $a -ne $b ] 返回 0。
    -gtgreater than检测左边的数是否大于右边的,
    是返回0, 否则1
    [ $a -gt $b ] 返回 1。
    -ltlower than检测左边的数是否小于右边的,
    是返回0, 否则1
    [ $a -lt $b ] 返回 0。
    -gegreater equals检测左边的数是否大于等于右边的,
    是返回0, 否则1
    [ $a -ge $b ] 返回 1。
    -lelower equals检测左边的数是否小于等于右边的,
    是返回0, 否则1
    [ $a -le $b ] 返回 0。
    <检测左边的数是否小于右边的,
    是返回0, 否则1
    (($a<$b)) 返回0
    <=检测左边的数是否小于等于右边的,
    是返回0, 否则1
    (($a<=$b)) 返回0
    >检测左边的数是否大于右边的,
    是返回0, 否则1
    (($a>$b)) 返回1
    >=检测左边的数是否大于等于右边的,
    是返回0, 否则1
    (($a>=$b)) 返回1
    ==检测左边的数是否等于右边的,
    是返回0, 否则1
    (($a==$b)) 返回1
    !=检测左边的数是否不等于右边的,
    是返回0, 否则1
    (($a!=$b)) 返回0

    注意:

    整数比较运算符只支持整数,不支持小数与字符串(字符串比较后续讲解),除非字符串的值是整数数字。

    每个命令都有返回值, 这个后面我们会讲解退出状态再具体说明, 返回0代表成功, 返回1代表失败

    2.2 demo

    #!/bin/bash
    read -p "输入两个整数:" a b
    
    echo "a: ${a}"
    echo "b: ${b}"
    
    
    
    if (($a > $b));
    then
        echo "a 大于 b"     
    elif (($a == $b)); then
        echo "a 等于 b"
    else
        echo "a 小于 b"
    fi
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在这里插入图片描述

    3 字符串比较运算符

    可以比较2个变量, 变量的类型可以为数字(整数,小数)与字符串

    3.1 语法

    下表列出了常用的字符串运算符,假定变量 a 为 “abc”,变量 b 为 “efg”:

    字符串比较可以使用 [[]][] 2种方式

    运算符说明举例
    == 或 =相等。用于比较两个字符串或数字,相同则返回 0。可以使用=[ $a == $b ] 返回1
    [ $a = $b ] 返回 1
    [[ $a == $b ]] 返回1
    [[ $a = $b ]] 返回1
    !=不相等。用于比较两个字符串或数字,不相同则返回 0。[ $a != $b ] 返回 0
    [[ $a != $b ]] 返回 0
    <小于, 用于比较两个字符串或数字, 小于返回0, 否则返回1[ $a \< $b ] 返回 0
    [[ $a < $b ]] 返回 0
    >大于, 用于比较两个字符串或数字, 大于返回0, 否则返回1[ $a \> $b ] 返回 1
    [[ $a > $b ]] 返回 1
    -z检测字符串长度是否为0,如果长度为0返回则返回0, 否则返回1。[ -z $a ] 返回 false。
    -n检测字符串长度是否不为 0,如果长度不为 0 则返回0, 否则返回1。[ -n “$a” ] 返回 true。
    $检测字符串是否不为空,不为空返回0, 为空返回1。[ $a ] 返回 true。

    字符串比较没有 <= 可以通过 [[ "a" < "b" && "a" == "b" ]]>

    3.2 demo

    #!/bin/bash
    read -p "输入两个字符串:" a b
    
    echo "a: ${a}"
    echo "b: ${b}"
    
    
    if [ $a == $b ]
    then
       echo "a等于b"
    else
       echo "a不等于b"
    fi
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    4 布尔运算符

    4.1 语法

    运算符说明举例
    !非运算,取反, 表达式为 true 则返回 false,
    否则返回 true。
    [ ! 表达式 ] 取反。
    -oor 或运算,有一个表达式为 true 则返回 true。[ 表达式1 -o 表达式2 ]
    -aand 与运算,两个表达式都为 true 才返回 true。[ 表达式1 -a 表达式2 ]

    4.2 demo

    #!/bin/bash
    a=1 b=2
    
    if [ $a -lt 2 -a $b -gt 10 ]
    then
       echo "$a 小于 2 且 $b 大于 10 : 返回 true"   
    else
       echo "$a 小于 2 且 $b 大于 10 : 返回 false"  
    fi
    
    if [ $a -lt 10 -o $b -gt 10 ]
    then
       echo "$a 小于 10 或 $b 大于 10 : 返回 true"  
    else
       echo "$a 小于 10 或 $b 大于 10 : 返回 false"
    fi
    
    if [ ! $a -gt $b ]
    then
       echo "$a 大于 $b 取反 : 返回 true"
    else
       echo "$a 大于 $b 取反 : 返回 false"   
    fi
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    在这里插入图片描述

    5 逻辑运算符

    5.1 命令

    运算符说明举例
    &&逻辑的 AND[[ 表达式1 && 表达式2 ]]
    ||逻辑的 OR[[ 表达式1 || 表达式2 ]]
    !逻辑非[[ ! 表达式 ]]

    注意

    使用&&|| 的运算符必须放在 [[]](())中才有效, 否则报错

    ! 可以用在[],[[]]中, 不可以在(())

    5.2 demo

    #!/bin/bash
    
    a=1 b=2
    
    if [[ $a -lt 10 && $b -gt 10 ]]
    then
       echo "返回 true" 
    else
       echo "返回 false"  
    fi
    
    if [[ $a -lt 10 || $b -gt 10 ]]
    then
       echo "返回 true"   
    else
       echo "返回 false"  
    fi
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在这里插入图片描述

  • 相关阅读:
    web前端期末大作业:基于html化妆品购物商城项目的设计与实现——化妆品官方网站设计与实现(HTML+CSS+JS)
    从阿里云容器攻防矩阵&API安全生命周期,看如何构建金融安全云原生平台
    论文解读(BGRL)《Large-Scale Representation Learning on Graphs via Bootstrapping》
    slurm调度系统部署
    iptables学习
    在MySQL上实现间隔5分钟汇总取数及相关字符串、时间处理方法实践
    Java基于SpringBoot+Vue+nodejs的在线小说阅读平台 element
    基于粒子群优化算法的冷热电联供型综合能源系统运行优化(Matlab代码实现)
    LLMs之Code:Code Llama的简介、安装、使用方法之详细攻略
    【PyTorch深度学习项目实战100例】—— 基于Conv3D实现三维立体MNIST数据集分类 | 第54例
  • 原文地址:https://blog.csdn.net/qq_34125999/article/details/125446192