zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    hadoop中namenode发生故障的处理方法
    开启虚拟机所报的错误:VMware Workstation cannot connect to the virtual machine. Make sure you have rights to run the program, access all directories the program uses, and access all directories for temporary fil
    Hbase的安装与部署(集群版)
    分别用反射、编程接口的方式创建DataFrame
    用Mapreduce求共同好友
    SparkSteaming中直连与receiver两种方式的区别
    privot函数使用
    Ajax无刷新显示
    使用ScriptManager服务器控件前后台数据交互
    数据库知识
  • 原文地址:https://www.cnblogs.com/sunjianlin/p/13237374.html
Copyright © 2011-2022 走看看