• shell-技术_算数运算


        数学计算,就离不开各种运算符号,shell 也有很多算术运算符,但是,Shell 和其它编程语言不同,Shell 不能直接进行算数运算,必须使用数学计算命令.

    算数运算符一览表:

    image

    注意:不能直接进行算数运算,必须使用数学计算命令

    运算操作符:

    运算命令一览表:

    image

    运算命令使用方法:

    运算命令:(())

    • 双小括号 (( )) 是 Bash shell 中专门用来进行整数运算的命令,它的效率很高,写法灵活,是企业运维中常用的运算命令。
    • 注意:(( )) 只能进行整数运算,不能对小数(浮点数)或者字符串进行运算
    [root@VM_0_9_centos ~]# echo $((1+1))
    2
    [root@VM_0_9_centos ~]# echo $((3-1))
    2
    [root@VM_0_9_centos ~]# echo $((3*1))
    3
    [root@VM_0_9_centos ~]# echo $((3/1))
    3
    

    运算命令:let

    • let 命令和双小括号 (( )) 的用法是类似的,它们都是用来对整数进行运算。
    • 注意:和双小括号 (( )) 一样,let 命令也只能进行整数运算,不能对小数(浮点数)或者字符串进行运算。
    • Shell let 命令的语法格式为:  let 表达式  或者  let "表达式"  或者  let '表达式'
    • 当表达式中含有 Shell 特殊字符(例如 |)时,需要用双引号" "或者单引号' '将表达式包围起来
    • let 适合++ -- 自增 自减 运算,直接得出结果
    [root@VM_0_9_centos ~]# a=7
    [root@VM_0_9_centos ~]# b=8
    [root@VM_0_9_centos ~]# let c=$a+$b
    [root@VM_0_9_centos ~]# echo $c
    15
    [root@VM_0_9_centos ~]# i=1
    [root@VM_0_9_centos ~]# let i++
    [root@VM_0_9_centos ~]# echo $i
    2
    

    运算命令:$[]

    • 和 (())、let 命令类似,$[] 也只能进行整数运算。  
    • shell $[] 的用法如下:  $[表达式]  $[] 会对表达式进行计算,并取得计算结果。
    • 如果表达式中包含了变量,那么你可以加$,也可以不加。
    [root@VM_0_9_centos ~]# echo $[1+1]
    2
    [root@VM_0_9_centos ~]# echo $[2*2+1]
    5
    [root@VM_0_9_centos ~]# echo $[(2*2+2)/2]
    3
    

    运算命令:expr

    • expr 是 evaluate expressions 的缩写,译为“表达式求值”。
    • expr 是一个功能强大,并且比较复杂的命令,它除了可以实现整数计算,还可以结合一些选项对字符串进行处理
    • 注意中间的空格(如果没有会当成一个整体)且只能用于整数计算(区别于小数)
    • 另外使用来做乘法运算时要记得转义,小括号也需要转义,因为有特殊的含义(通配符)
    [root@VM_0_9_centos ~]# expr 5 - 2
    3
    [root@VM_0_9_centos ~]# expr 5 + 2
    7
    [root@VM_0_9_centos ~]# expr 5 * 2
    10
    [root@VM_0_9_centos ~]# expr ( 2 + 3 ) * 2
    10
    

    运算命令:bc

    • shell 内置了对整数运算的支持,但是并不支持浮点运算,而bc 命令可以很方便的进行浮点运算,当然整数运算也不再话下。
    • bc 甚至可以称得上是一种编程语言了,它支持变量、数组、输入输出、分支结构、循环结构、函数等基本的编程元素
    • 在终端输入bc命令,然后回车即可进入 bc 进行交互式的数学计算
    • 在脚本中,可以通过管道和输入重定向来使用 bc
    [root@VM_0_9_centos ~]# bc
    bc 1.06.95
    Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
    This is free software with ABSOLUTELY NO WARRANTY.
    For details type `warranty'.
    1+1
    2
    5*2
    10
    1.25*2
    2.50
    1.24/0.2
    6
    quit
    

    脚本内使用

    [root@VM_0_9_centos ~]# sh 1.sh
    2
    10
    2.48
    6
    [root@VM_0_9_centos ~]# cat 1.sh
    echo 1+1 |bc
    echo 5*2 |bc
    echo 1.24*2 |bc
    echo 1.24/0.2 |bc
    
  • 相关阅读:
    [转载]Javascript:history.go()和history.back()的用法和区别
    微信商户平台,开通企业付款到用户功能
    使用ASP.Net WebAPI构建REST服务——客户端
    在WebAPI使用Session
    在asp.net一般应用程序中使用session
    Web Api Post注意事项
    WebAPI返回数据类型解惑
    c#中const与readonly区别
    sql之left join、right join、inner join的区别
    C#实现json的序列化和反序列化
  • 原文地址:https://www.cnblogs.com/sunjianlin/p/13237374.html
Copyright © 2020-2023  润新知