Linux 使用 shell 进行数学运算

Bash shell使用let、 (( ))和[]执行基本的算术操作。工具expr和bc可以用来执行高级操作。

  • 可以为变量分配数值,这些值会被相应的操作符视为数字。

  • let命令可以直接执行基本的算术操作。当使用let时,变量名之前不需要再添加$

    ming@ming-Aspire-E5-572G:~$ num1=4;num2=5
    ming@ming-Aspire-E5-572G:~$ let result=num1+num2
    ming@ming-Aspire-E5-572G:~$ echo $result
    9
    
  • let命令的其他用法如下

    • 自增:let num++let ++num
    • 自减:let num--let --num
    • 简写形式:let num+=6
  • 操作符[]的使用方法和let命令一样,只是需要在方括号前面加上 $ 符号。

    ming@ming-Aspire-E5-572G:~$ result=$[num1+num2]
    ming@ming-Aspire-E5-572G:~$ echo $result
    11
    

    它也支持自增、自减等操作。

  • 也可以使用操作符(()),和 [] 类似。

    ming@ming-Aspire-E5-572G:~$ result=$((num1+100))
    ming@ming-Aspire-E5-572G:~$ echo $result
    106
    
  • expr同样可以用于基本算术操作。此时,引用变量时需要加上 $ 符号。

    ming@ming-Aspire-E5-572G:~$ result=`expr 3 + 4`
    ming@ming-Aspire-E5-572G:~$ echo $result
    7
    ming@ming-Aspire-E5-572G:~$ result=$(expr $num1 + 5)
    ming@ming-Aspire-E5-572G:~$ echo $result
    11
    

以上这些方法不支持浮点数,只能用于整数运算。


bc是一个用于数学运算的高级实用工具,这个精密的计算器包含了大量的选项。我们可以借助它执行浮点数运算并使用一些高级函数。

ming@ming-Aspire-E5-572G:~$ echo "4 * 0.56" | bc
2.24
ming@ming-Aspire-E5-572G:~$ no=54
ming@ming-Aspire-E5-572G:~$ result=`echo "$no * 1.5" | bc`
ming@ming-Aspire-E5-572G:~$ echo $result
81.0

bc可以接受操作控制前缀。这些前缀之间使用分号分隔。

  • 设定小数精度
    在下面的例子中,参数scale=2将小数位个数设置为2。因此, bc将会输出包含两个小数位的数值:

    ming@ming-Aspire-E5-572G:~$ echo "scale=2;22/7" | bc
    3.14
    
  • 进制转换
    用bc可以将一种进制系统转换为另一种。来看看下面的代码是如何在十进制与二进制之间相互转换的:

    ming@ming-Aspire-E5-572G:~$ no=100
    ming@ming-Aspire-E5-572G:~$ echo "obase=2;$no" | bc
    1100100
    ming@ming-Aspire-E5-572G:~$ no=1100100
    ming@ming-Aspire-E5-572G:~$ echo "obase=10;ibase=2;$no" | bc
    100
    

    ibase 表示 input base,即输入数字的基数;
    obase 表示 output base,即输出数字的基数。

  • 计算幂以及平方根

    ming@ming-Aspire-E5-572G:~$ echo "sqrt(100)" | bc
    10
    ming@ming-Aspire-E5-572G:~$ echo "10^10" | bc
    10000000000
    

猜你喜欢

转载自blog.csdn.net/fcku_88/article/details/88603565