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
原文地址:https://www.cnblogs.com/sunjianlin/p/13237374.html