shell-变量的数值运算-bc-typeset-中括号等方法介绍
1. bc命令的用法:
bc是unix下的计算器,它也可以用在命令行下面:
例:给自变量i加1
i=2
i=`echo $i + 1|bc` --------效率低
因为bc支持科学计算,所以这种方法功能非常强大
echo $i + 1|bc [root@1-241 scripts]# echo 3.5+5|bc 8.5 [root@1-241 scripts]# echo 3.5+8|bc 11.5 [root@1-241 scripts]# echo 3.5+8.9|bc 12.4 [root@1-241 scripts]# echo "scale=1;5.23 * 3.13"|bc 16.36 [root@1-241 scripts]# echo "obase=2;8"|bc #把十进制转换成二进制 1000 [root@1-241 scripts]# echo "obase=2;4"|bc 100 [root@1-241 scripts]# echo "obase=2;1"|bc 1 [root@1-241 scripts]# echo "obase=2;2"|bc 10 [root@1-241 scripts]# echo "obase=16;20"|bc #把十进制转换成十六进制 14 [root@1-241 scripts]# seq -s "+" 10|bc 55
特点: bc的特点是支持小数运算
2. typeset命令的用法:
使用整数变量直接进行计算
例如:
[root@1-241 scripts]# typeset -i A=1 B=3 [root@1-241 scripts]# A=A+B [root@1-241 scripts]# echo $A 4
3. $[ ]的用法:
实践操作演示:
[root@1-241 scripts]# echo $[3+2] 5 [root@1-241 scripts]# echo $[3-2] 1 [root@1-241 scripts]# echo $[3*2] 6 [root@1-241 scripts]# echo $[3/2] 1 [root@1-241 scripts]# echo $[3**2] 9 [root@1-241 scripts]# echo $[3%2]
实际解决问题例子:打印数学杨辉三角
#!/bin/bash if (test -z $1) ;then read -p "Input Max Lines:" MAX else MAX=$1 fi i=1 while [ $i -le $MAX ] #i行控制 do j=1 while [ $j -le $i ] #j列控制 do f=$[i-1] #f=i-1 这是另一种计算写法。 g=$[j-1] #g=j-1 这是另一种计算写法。 if [ $j -eq $i ] || [ $j -eq 1 ] ; then declare SUM_${i}_$j=1 #声明变量 头尾都是1 else declare A=$[SUM_${f}_$j] #取上一行的j列变量 declare B=$[SUM_${f}_$g] #取上一行的j-1列变量 declare SUM_${i}_$j=`expr $A + $B` #声明并计算当前变量的值 fi echo -en $[SUM_${i}_$j]" " #输出当前变量 let j++ done echo #换行 let i++ done