Contents

1.19. let运算符

$[]等同于$(())等同于let a=$a+1 (let a++)  # $[]表示形式告诉shell求中括号中的表达式的值
~var            # 按位取反运算符,把var中所有的二进制为1的变为0,为0的变为1
var\<<str       # 左移运算符,把var中的二进制位向左移动str位,忽略最左端移出的各位,最右端的各位上补上0值,每做一次按位左移就有var乘2
var>>str        # 右移运算符,把var中所有的二进制位向右移动str位,忽略最右移出的各位,最左的各位上补0,每次做一次右移就有实现var除以2
var&str         # 与比较运算符,var和str对应位,对于每个二进制来说,如果二都为1,结果为1.否则为0
var^str         # 异或运算符,比较var和str对应位,对于二进制来说如果二者互补,结果为1,否则为0var|str         # 或运算符,比较var和str的对应位,对于每个二进制来说,如二都该位有一个1或都是1,结果为1,否则为0

运算符优先级
        级别      运算符                                  说明
        1      =,+=,-=,/=,%=,*=,&=,^=,|=,<<=,>>=      # 赋值运算符
        2         ||                                  # 逻辑或——只有当前一个命令执行失败时才执行后一个命令。
        3         &&                                  # 逻辑与——只有当前一个命令执行成功时才执行后一个命令。
        4         |                                   # 按位或
        5         ^                                   # 按位异或
        6         &                                   # 按位与
        7         ==,!=                               # 等于/不等于
        8         <=,>=,<,>                           # 小于或等于/大于或等于/小于/大于
        9        \<<,>>                               # 按位左移/按位右移 (无转意符号)
        10        +,-                                 # 加减
        11        *,/,%                               # 乘,除,取余
        12        ! ,~                                # 逻辑非,按位取反或补码
        13        -,+                                 # 正负

逻辑操作符
        在[]中使用逻辑操作符         在[[]]中使用逻辑操作符             说明
            -a                              &&                 and与,两端都为真,则真
            -o                              ||                 or或,两端有一个为真则真            !                               !                  not非,相反则为真


数学运算

    $(( ))          # 整数运算   #r=$((2+5*8))
    expr 算术式                     #r=`expr 4 + 5`
    $[算术式]                   #r=$[4+5]
    declare -i 变量=算术式        #declare -i r=8+16
    let 算术式                      #let r=8+16
    + - * / **    # 分別为 "加、減、乘、除、密运算"
    & | ^ !       # 分別为 "AND、OR、XOR、NOT" 运算
    %             # 余数运算