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 

  

posted @ 2020-04-24 10:04  七月流星雨  阅读(417)  评论(0编辑  收藏  举报