zoukankan      html  css  js  c++  java
  • Shell脚本笔记(三)shell中的数学计算

    shell中的数学计算

    一、使用方括号

    #!/bin/bash
    a=10
    b=29
    c=88
    
    res=$[$a * ($c-$b)]
    echo $res

    二、使用(())

    echo $((1+9))
    ((i=1+2))
    b=$((9-2*2))
    
    echo $((a+=1))
    echo $((a**2)) #计算a的平方
    echo $((8<9)) #输出1
    echo $((i++)) 
    echo $((RANDOM%61)) #产生一个不大于60的随机数

    三、bc的用法

    bc技术器实际上是一种编程语言,它可以识别:

    数字(整数和浮点数)
    变量(简单变量和数组)
    注释(以#C语言中的/* */开始的行)
    表达式
    编程语句(例如if-then语句)
    函数

    浮点运算是由内建变量scale控制的。必须将这个值设置为你希望在计算结果中保留的小数
    位数,否则无法得到期望的结果。

    $ bc -q
    3.44 / 5
    0
    scale=4
    3.44 / 5
    .6880
    quit
    $

    bc还能支持变量:

    $ bc -q
    var1=10
    var1 * 4
    40
    var2 = var1 / 5
    print var2
    2
    quit
    $

    脚本中使用bc:

    方式一:

    variable=$(echo "options; expression" | bc)

    实例:

    #!/bin/bash
    var1=$(echo "scale=4; 3.44 / 5" | bc)
    echo The answer is $var1

    方式二,使用内联输入,格式:

    variable=$(bc << EOF
    options
    statements
    expressions
    EOF
    )

    var1=10.46
    var2=43.67
    var3=33.2
    var4=71
    var5=$(bc << EOF
    scale = 4
    a1 = ( $var1 * $var2)
    b1 = ($var3 * $var4)
    a1 + b1
    EOF
    )

     三、Shell中产生随机数的方法

    1)通过系统变量RANDOM

    #范围:0~3267,因此用于加密时加密性不太好
    echo $RANDOM 

    2)通过openssl产生随机字符串

    openssl rand -base64 8

    3)通过date产生

    date +%s%N

    4)通过/dev/urandom配合chksum

    head /dev/urandom|cksum

    四、常见用法

    expr $a + 1 &> /dev/null #判断是否为数字的方法
    RA=$?
    expr $b + 2 &> /dev/null
    RB=$?
    if [ $RA -ne 0 -o $RB -ne 0 ];then
        echo 'one of the input is not num!!!!'
        exit 1
    fi
    Simple is important!
  • 相关阅读:
    构建之法阅读笔记07
    7-第一阶段SCRUM冲刺
    第一阶段个人冲刺博客第十天
    第一阶段个人冲刺博客第九天
    第九周学习进度博客
    java项目(学习和研究)
    让计算机干活
    os基础
    树和图的一些算法
    java代码理解
  • 原文地址:https://www.cnblogs.com/Shadowplay/p/8310290.html
Copyright © 2011-2022 走看看