zoukankan      html  css  js  c++  java
  • Shell中的算术运算(译)

    算术运算

    尽管Shell中的变量被缺省地看做是string类型,而非number,但是Shell本身仍然支持算术运算。
    主要有以下5种方式。

    1. declare

    $ n=6/3
    $ echo $n
    6/3
    $ declare -i n #将n声明为一个整数(integer)
    $ n=6/3
    $ echo $n
    2

    2. expr

    $ z=5
    $ z=`expr $z+1`   # 加号(+)两边要有空格
    $ echo $z
    5+1
    $ z=`expr $z + 1`
    $ echo $z
    6

    3. let

    $ let z=5
    $ echo $z
    5
    $ let z=$z+1
    $ echo $z
    6
    $ let z=$z + 1     # 与expr相反, 在加号(+)两边加空格会导致let报错!
    -bash: let: +: syntax error: operand expected (error token is "+")
    
    $let z=z+1         # 在读取变量值的时候,可以省略美元符号($)
    $echo $z
    7

    4. Bash内置运算( 双括号(()) )

    $ ((e=5))
    $ echo $e
    5
    $ (( e = e + 3 ))
    $ echo $e
    8
    $ (( e=e+4 ))  # 加号(+)两边的空格可加可不加
    $ echo $e
    12

    支持的算术运算有:

    符号含义
    + – 加减
    ++ — 自增 自减
    * / % 乘 除 取模
    **

    除了支持算术运算外,还支持逻辑运算:

    if (( x > y )); then
        echo "x > y"
    fi

    支持的逻辑运算有:

    符号含义
    <= >= < > 小于等于 大于等于 小于 大于
    == != 相等 不等
    ! 否定
    &&
    ||

    5. bc

    bc支持浮点运算,这在let(())中是不支持的。

    $let r=3.5
    -bash: let: r=3.5: syntax error in expression (error token is ".5")
    $(( r = 3.5 ))
    -bash: ((: r = 3.5 : syntax error in expression (error token is ".5 ")

    bc的用法如下:

    $ bc
    bc 1.06
    Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
    This is free software with ABSOLUTELY NO WARRANTY.
    For details type `warranty'.
    3 + 2
    5
    obase=2
    12
    1100
    <cntrl-d>

    注意,使用ctrl + d(EOF)可以退出bc

    $r=3.5
    $s=`echo "$r + 2.2" | bc`
    $echo $s
    5.7
    
    $ z=`echo "$z + 1" | bc`
    $ echo $z
    8
    $ z=`echo "$z+1" | bc`  # 加号(+)两边的空格可加可不加
    $ echo $z
    9

    数字类型的布尔表达式

    有一下3种方式比较数字类型变量的大小。

    1. test(即[])

    符号含义举例
    -eq 相等 [ ‘1’ -eq 1 ]
    -gt 大于 [ 2 -gt 1 ]
    -ge 大于等于 [ 2 -ge 1 ]
    -lt 小于 [ 2 -gt 3 ]
    -le 小于等于 [ 2 -le ‘3’]
    -ne 不等于 [ $var1 -ne $var2 ]

    2. 双括号(即 (()) )

    以下2个表达式是等价的。

    if (( x < y )); then
        statements
    fi
    
    if [ $x -lt $y ]; then
        statements
    fi

    3. bc

    bc可以用于比较浮点数的大小:当比较结果为真(true)时,返回1;否则返回0。举个例子:

    if [ $( echo "$t < 3.4" | bc ) -eq 1 ]; then
        statements
    fi

    原文: Math in Shell Scripts

    个人主页: http://www.lslxdx.com
  • 相关阅读:
    [Vue] #常见开发场景 #条件渲染#手动挂载 #组件方法的值驱动执行
    [JS高程] Typed Array 定型数组
    [JS高程]JavaScript中的RegExp对象
    [JS高程] Map 和 Set
    [JS高程] JavsScript 常用数组方法总结
    [JS高程] 字符串模式匹配方法
    自动化集成:Pipeline整合Docker容器
    自动化集成:Docker容器入门简介
    自动化集成:Jenkins管理工具详解
    分布式系统中,权限设计实践
  • 原文地址:https://www.cnblogs.com/lslxdx/p/6566371.html
Copyright © 2011-2022 走看看