• shell 脚本 2


    算术运算 

    在shell中+就是个字符串

    [root@liang ~ 19:59:16]#x=10
    [root@liang ~ 20:08:07]#y=20
    [root@liang ~ 20:08:13]#z=$x+$y
    [root@liang ~ 20:08:28]#echo $z
    10+20

    如果想进行算术运算就要用相应的写法 

    bash   中的算术运算:help let

            +,-,*,/,%取模( 取余),**乘方

           实现算术运算:

           1 :let    var =算术表达式

    [root@liang ~ 20:08:40]#x=10
    [root@liang ~ 20:15:20]#y=20
    [root@liang ~ 20:15:23]#let z=x+y
    [root@liang ~ 20:15:44]#echo $z
    30

                     也可以一个一个的加++

    [root@liang ~ 20:15:54]#let x++
    [root@liang ~ 20:17:36]#echo $x
    11 

    [root@liang ~ 20:17:42]#let ++x
    [root@liang ~ 20:18:26]#echo $x
    12    

           2 :var =$[算术表达式]

    [root@liang ~ 20:18:29]#n=2
    [root@liang ~ 20:21:38]#m=3
    [root@liang ~ 20:21:44]#sum=$[n+m]
    [root@liang ~ 20:22:08]#echo $sum
    5

           3:   var=$((算术表达式))

    [root@liang ~ 20:52:06]#n=2
    [root@liang ~ 20:59:00]#m=3
    [root@liang ~ 20:59:56]#sum=$((n+m))
    [root@liang ~ 21:00:27]#echo $sum
    5

          (不确定) 4:  var =$(expr   arg1   arg2   arg3 ...)             expr  一般用于整数值计算  但也可以用于字符串

    格式

    expr argument operator argument

    参数说明

    argument:为第一个参数
    operator:为操作运算符
    argument:为第二个参数
    [root@liang bin 14:28:57]#expr 3 + 4
    7
    [root@liang bin 14:32:35]#echo $(expr 5 + 6)
    11

           5:  declare  -i  var =数值

    [root@liang ~ 19:55:46]#declare -i x=10
    [root@liang ~ 19:57:50]#declare -i y=20
    [root@liang ~ 19:58:01]#declare -i c=x+y
    [root@liang ~ 19:58:20]#echo $c
    30    

            6:echo   ‘算术表达式’    |  bc  

     乘法符号有些场景中需要转义  ,如*

     bash有内建的随机数生成器 $RANDOM(0-32767)

                   echo $[$RANDOM%50] : 0-49之间随机数

    取模

    [root@liang ~ 20:22:21]#let result=100%3
    [root@liang ~ 20:24:18]#echo $result
    1
    [root@liang ~ 20:24:32]#result=$[100%3]
    [root@liang ~ 20:25:09]#echo $result
    1

    let命令 

    0   false   假                                  要与$?区分开       $?       0  成功的

    1    true    真                                                                          1   假的

    0&0=0       0和0

    0&1=0

    1&0=0

    1&1=1

    0|0=0       0或0

    0|1=1

    1|0=1

    1|1=1

    短路与    &&

    短路或     ||

    0&&0=0       0和0

    0&&1=0

    1&&0=0

    1&&1=1

    但是如果是两个命令结果不一样

    cmd1  &&cmd2      

    cmd1为假  ,cmd2就不需要执行了

    cmd1  ||  cmd2

    如果cmd1为真,cmd2不需要执行,cmd1为假,cmd2才执行

    亦或^    XOR   对位亦或

    0^0=0

    0^1=1

    1^0=1

    1^1=0

    a=6                       110

    b=4                       100

    c=a^b=2                010        

                                         

    所以利于这个可以做到把a和b的变量互换

    [root@liang ~ 19:33:30]#a=6
    [root@liang ~ 19:47:25]#b=4
    [root@liang ~ 19:47:29]#let c=a^b
    [root@liang ~ 19:47:58]#echo $c
    2
    [root@liang ~ 19:48:13]#echo $a $b                        
    6 4
    [root@liang ~ 19:50:51]#a=$[a^b];b=$[a^b];a=$[a^b];echo $a $b
    4 6

    我们也可以用tmp   把a和b的变量互换

    [root@liang ~ 19:54:24]#a=6
    [root@liang ~ 19:54:47]#b=4
    [root@liang ~ 19:54:52]#tmp=$a
    [root@liang ~ 19:55:06]#a=$b
    [root@liang ~ 19:55:18]#b=$tmp
    [root@liang ~ 19:55:33]#echo $a $b
    4 6

  • 相关阅读:
    Search Insert Position
    Sum Root to Leaf Numbers
    String to Integer (atoi)
    Populating Next Right Pointers in Each Node
    Triangle
    Pascal's Triangle II
    Longest Consecutive Sequence
    属性透明度
    ul的列表符号在IE6下显示不全
    table的属性border-collapse 设置边框是否合并
  • 原文地址:https://www.cnblogs.com/liang-1/p/8823267.html
Copyright © 2020-2023  润新知