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

原文地址:https://www.cnblogs.com/liang-1/p/8823267.html