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 
    

      

  • 相关阅读:
    时间复杂度计算(二)
    程序时间复杂度计算(一)
    一个图像算法岗的面试总结
    文本小票的一种无监督聚类方法
    多个C3P0的java举例
    基于投影和众数特点的粘连sku分割
    GLSL 中的光照计算
    openGL 提升渲染性能 之 顶点数组 VBO IBO VAO
    C++ 中的返回值
    游戏中逻辑线程和逻辑线程的并行
  • 原文地址:https://www.cnblogs.com/scajy/p/12765568.html
Copyright © 2011-2022 走看看