Linux Shell的数学运算

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=
也就是说,跟 [ ] 一样,使用( ( ) ) 时,(()) 前面一定要有$,
而变量前面可有可无。

猜你喜欢

转载自blog.csdn.net/weixin_43171083/article/details/82588093