zoukankan      html  css  js  c++  java
  • shell笔记-算术运算

    算术运算
    在Bash shell环境中,可以利用let、(( ))和[]执行基本的算术操作。而在进行高级操作时,
    expr和bc这两个工具也会非常有用。
    let命令可以直接执行基本的算术操作。当使用let时,变量名之前不需要再添加$,
    [root@server0 ~]# a=5
    [root@server0 ~]# let a++ #自加操作
    [root@server0 ~]# echo $a
    6
    [root@server0 ~]# b=4
    [root@server0 ~]# let b-- #自减操作
    [root@server0 ~]# echo $b
    3

    [root@server0 ~]# x=1
    [root@server0 ~]# y=2
    [root@server0 ~]# let x+=100 #简写形式
    [root@server0 ~]# let y-=100
    [root@server0 ~]# echo $x
    101
    [root@server0 ~]# echo $y
    -98

    其它方法:
    使用操作符[ ]
    [root@server0 ~]# q=100
    [root@server0 ~]# w=200
    [root@server0 ~]# result=$[ q + w ]
    [root@server0 ~]# echo $result
    300
    [root@server0 ~]# result2=$[ q + 123 ]
    [root@server0 ~]# echo $result2
    223
    [root@server0 ~]# result3=[ $w + 1 ]
    bash: 200: command not found...
    [root@server0 ~]# result3=$[ $w + 1 ]
    [root@server0 ~]# echo $result3
    201

    使用操作符(()),同上:
    [root@server0 ~]# result4=(($q + 1))
    -bash: syntax error near unexpected token `('
    [root@server0 ~]# result4=(( $q + 1 ))
    -bash: syntax error near unexpected token `('
    [root@server0 ~]# result4=$(( $q + 1 )) #注意,括号前后有空格
    [root@server0 ~]# echo $result4
    101
    [root@server0 ~]# result5=$(( q + 1 ))
    [root@server0 ~]# echo $result5
    101

    使用expr方式
    [root@server0 ~]# result6=`expr $q + 1 ` #中间可以引用变量
    [root@server0 ~]# echo $result6
    101
    [root@server0 ~]# result7=`expr 1 + 2 `
    [root@server0 ~]# echo $result7
    3
    [root@server0 ~]# result8=$(expr $w + 1) #括号加不加空格都不影响,但是
    [root@server0 ~]# echo $result8
    201
    [root@server0 ~]# result8=$( expr $w +1 ) #但是算术运算符号左右一定要加空格
    expr: syntax error
    [root@server0 ~]# result8=$( expr $w+1 )
    [root@server0 ~]# echo $result8
    200+1
    以上这些方法只能用于整数运算,而不支持浮点数。

    bc命令:
    bc是一个用于数学运算的高级工具,这个精密计算器包含了大量的选项。我们可以
    借助它执行浮点数运算并应用一些高级函数:
    [root@server0 ~]# no=54
    [root@server0 ~]# result=`echo "$no * 1.5" | bc`
    [root@server0 ~]# echo $result
    81.0
    [root@server0 ~]# echo "4 * 0.56" | bc
    2.24
    其他参数可以置于要执行的具体操作之前,同时以分号作为定界符,通过stdin传递给bc。
    设定小数精度。在下面的例子中,参数scale=2将小数位个数设置为2。因此,
    bc将会输出包含两个小数位的数值。
    [root@server0 ~]# echo "scale=2;3/8" | bc
    .37
    进制转换。用bc可以将一种进制系统转换为另一种。来看看如何将十进制转换成
    二进制,然后再将二进制转换回十进制:
    [root@server0 ~]# no=100
    [root@server0 ~]# echo "obase=2;$no" | bc
    1100100
    [root@server0 ~]# no2=1100100
    [root@server0 ~]# echo "obase=10;ibase=2;$no2" | bc
    100
    计算平方以及平方根
    [root@server0 ~]# echo "sqrt(100)" | bc
    10
    [root@server0 ~]# echo "10^10" | bc
    10000000000

  • 相关阅读:
    Linux下运行当前目录需要加./的原因
    Linux mint界面过小无法安装(解决方法)
    哈工大机考:数组逆置
    哈工大机考:字符串内排序
    哈工大机考:求最大值
    八皇后问题的简单分析
    哈工大机考:字符串去特定字符
    哈工大机考:计算两个矩阵的乘积
    iOS 字号转换问题
    iOS 十六进制的颜色值转换为UIColor
  • 原文地址:https://www.cnblogs.com/rusking/p/9072539.html
Copyright © 2011-2022 走看看