#/bin/bash

在进行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的功能并不只有这些,基本上我们可以想到的表达式都可以使用这个命令来进行运算,比如自加、自减等运算:

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