#/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