Linux Shell的数学运算
下面是一些关于和linux shell中关于数学运算的小见解,在学《Linux Shell 脚本攻略》这本书,发现其中有的地方写的不是很详细(权当做自己的读书笔记):
- 使用let
- 使用操作符[ ]
- 使用( ( ) )
测试环境:Ubuntu 18.04 LTS 终端:bash
使用let
let 命令是 BASH 中用于计算的工具,用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量。如果表达式中包含了空格或其他特殊字符,则必须引起来。 —— [ 菜鸟教程 ]
使用let时,let后面的表达式的所有变量(不管是等号左边还是右边)
均不需要加上 $
eg:
[user@local:~]$ num1=1
[user@local:~]$ num2=2
[user@local:~]$ let result=num1+num2 #均不需要加 $
[user@local:~]$ let result++ #自加操作
[user@local:~]$ let result-- #自减操作
[user@local:~]$ let result+=5 #简写形式,
#相当于result=result+5, -=,*=,/= 类似.
使用操作符 [ ]
#!/bin/bash
num1=1
num2=2
result=$[ num1 + num2 ]
#或者
#result=$[ $num1 + $num2 ]
#也就是说要在[]前面加上$,
#因为[]前面加上 $ ,才有运算的作用,
#而[]内的变量可以加也可以不加$.
下面列出我自己测试的内容
#!/bin/bash
2 num1=1
3 num2=2
4 echo "num1=$num1 , num2=$num2"
5
6 result1=[num1+num2]
7 echo "形式: result1=[num1+num2] 结果:result1=$result1"
8
9 result2=$[num1+num2]
10 echo "形式: result2=\$[num1+num2] 结果:result2=$result2"
11
12 result3=[$num1+$num2]
13 echo "形式: result3=[\$num1+\$num2] 结果:result3=$result3"
14
15 result4=$[$num1+$num2]
16 echo "形式: result4=\$[\$num1+\$num2] 结果:result4=$result4"
下面是上面这个程序的输出
num1=1 , num2=2
形式: result1=[num1+num2] 结果:result1=[num1+num2]
形式: result2=\$[num1+num2] 结果:result2=3
形式: result3=[\$num1+\$num2] 结果:result3=[1+2]
形式: result4=\$[\$num1+\$num2] 结果:result4=3
使用 ( ( ) )
下面是测试,
result4=$[$num1+$num2]
16 echo "形式: result4=\$[\$num1+\$num2] 结果:result4=$result4"
17
18 result5=(($num1+$num2))
19 echo "形式: result5=((\$num1+\$num2)) 结果:result5=$result5"
20
21 result6=$(($num1+$num2))
22 echo "形式: result4=\$((\$num1+\$num2)) 结果:result6=$result6"
23
24 result7=$((num1+num2))
25 echo "形式: result7=\$((num1+num2)) 结果:result7=$result7"
26
27 result8=((num1+num2))
28 echo "形式: result8=((num1+num2)) 结果:result8=$result8"
下面是上面程序的输出
compute.sh: 行 18: 未预期的符号 `(' 附近有语法错误
compute.sh: 行 18: `result5=((\$num1+\$num2))'
形式: result5=((\$num1+\$num2)) 结果:result5=
形式: result6=\$((\$num1+\$num2)) 结果:result6=3
形式: result7=\$((num1+num2)) 结果:result7=3
compute.sh: 行 27: 未预期的符号 `(' 附近有语法错误
compute.sh: 行 27: `result8=((num1+num2))'
形式: result8=((num1+num2)) 结果:result8=