Shell脚本编程之算数运算
在进行Shell脚本编程之前一定要在脚本的开头加上上头这一句话,并且要顶着头写,前头不能有空格和空行。这句话的意思是告诉系统用哪一种shell来执行此脚本。如果没有这句话就有可能发生一些意想不到的错误。
接下来说一说在shell脚本中或命令行中如何进行算数运算。也许你已经发现,因为shell中的变量的格式都为字符类型,所以如果只是简单的让一个变量去等于一个表达式的话,那么当输出此变量的时候输出的还是哪个表达式,而并不是表达式所得出来的结果,比如:
~]$ a=1+2
~]$ echo $a
1+2
我们想让a=3,但是当我们使用echo把a这个变量显示出来的时候却得到的是字符串“1+2”。
那么当我们想要变量a等于3的时候应该怎么做呢?
此时有以下几种方法:
1.使用命令let就能得到想要的结果了,格式为:let VAR=算术表达式
~]$ let a=1+2
~]$ echo $a
3
除了加法,简单的算数运算还有减法、乘法、除法、取模和次幂。当然,let的功能并不只有这些,基本上我们可以想到的表达式都可以使用这个命令来进行运算,比如自加、自减等运算:
12345 let B+=2 等同于 let B=b+2
let B-=2 等同于 let B=B-2
let B*=2 等同于 let B=B*2
let B/=2 等同于 let B=B/2
let B%=2 等同于 let B=B%2
当变量和两个连续的加号或减号在一起连用就是自加一,但是会有前后的区别,比如:
1)当变量在前时,变量a先将值赋给变量b,然后自加一:
~]$ a=2
~]$ let b=a++
~]$ echo $b
2
~]$ echo $a
3
2)当变量在后时,变量a先自加一,然后将值赋给变量b:
~]$ a=2
~]$ let b=++a
~]$ echo $b
3
~]$ echo $a
3
同理:当运算符为“-”时也是如此。
2.VAR=$[算术表达式],格式为:SUM=$[C+B]相当于$[$C+$B],中括号里可以是变量也可以直接是一个表达式,比如
~]$ echo $b
3
~]$ echo $a
3
~]$ echo $[a+b]
6
或
~]$ echo $((1+2))
3
3.VAR=$((算术表达式)),这种方法和上一种方法基本一样,但是注意,小括号必须为两个,当只有一个小括号的时候是命令的引用。
4.expr ARGU1 ARGU2 ARGU3 ARGU1和ARGU3 必须是数值,ARGU2是运算符,且每个参数之间要用空格隔开,否则不能输出正常的结果,比如:
~]$ expr 1+2
1+2
~]$ expr 1 + 2
3
5.echo “算术表达式” | bc
这种方法是利用管道线将一个算数表达式送过bc命令
比如:
~]$ echo "1+2" | bc
3