zoukankan      html  css  js  c++  java
  • 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 
    

      

  • 相关阅读:
    爱就是一个人一辈子
    硬件访问方法和混杂字符设备
    Linux内核等待队列
    深入浅出的讲解傅里叶变换(真正的通俗易懂)
    Linux用root强制踢掉已登录用户
    一文带你读懂宽带上下行速率不对称的原因
    FDD-LTE上下行带宽一样的,为什么上下行流量差别这么大
    linux alsa音频中采样率fs、比特率BCLK 、主时钟MCLK关系
    80211 发送速率选择算法分析
    imx6q 启动logo
  • 原文地址:https://www.cnblogs.com/scajy/p/12765568.html
Copyright © 2011-2022 走看看