一、基本表达式
- 运算表达式:
expr
:不支持浮点数计算,计算结果直接输出,中间必须存在空格。
格式expr 整数1 运算符 整数2 ...
$[]
:不支持浮点数计算,空格可有可无。
格式$[整数1 运算符 整数2 ...]
$(())
:不支持浮点数计算,空格可有可无。
格式$((整数1 运算符 整数2 ...))
let
:不支持浮点数计算,除了let
后面有空格,计算中必定不能存在空格,只能赋值,不能直接输出,需要通过echo
进行输出。
格式let 属性名=整数1+整数2...
awk
:不支持浮点数计算,使用时,直接使用数字进行计算跟使用变量进行计算需要注意区别。
纯数字格式:echo | awk '{print 1/2}'
,可支持单引号计算。
有变量格式:echo | awk "{print $x/$y}"
,必须双引号,也支持纯数字计算。- 重点:
以上表达式都不支持浮点数计算
。
# $[] 表达式 $ echo $[1+2] $ echo $[2-1] $ echo $[2*1] $ echo $[2/1] $ echo $[2%3] # $(()) 表达式 $ echo $((1+2)) # let 表达式 $ let x=1+2 $ echo $x # expr 表达式 $ expr 1 + 2 # awk 表达式 $ echo | awk '{print 1/2}' $ echo | awk "{print 1/2}" $ x=1 $ y=2 $ echo | awk "{print $x/$y}"
简写表达式(自增自减)
简写表达式 | 完整表达式 |
i++ | i=i+1 |
i– | i=i-1 |
i+=2 | i=i+2 |
i-=2 | i=i-2 |
i*=2 | i=i*2 |
i/=2 | i=i/2 |
i%=2 | i=i%2 |
# 案例一: $ x=4 $ echo $[x+=1] 5 # 案例二: $ x=4 $ let x++ $ echo $x 5 # 案例三: $ let x=4+1 $ echo $x 5
二、小数运算(bc
)
bc
是Linux
下的计算机工具模块,bc
支持交互式
和非交互式
两种计算,在进行计算的时候,可以使用scale=n
来指定小数点的位数,还支持比较操操作符>、>=、<、<=、==、!=
。
交互式
:打开bc
计算机,进行使用。非交互式
:通过脚本命令执行,不需要打开计算机。
- 在使用
bc
命令时如果报错bc: command not found
,说明没有安装此工具模块,需要进行安装:
$ yum -y install bc
交互式
使用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'. # 整数计算 2*3 6 # 小数计算 3.4+9.0 12.4 # 保留小数点 10/2 5 # 设置保留两位小数点 scale=2 # 整数相除 10/2 5.00 4/5 .80 # 退出计算机 quit
- 上面这种是类似直接打开计算机进行使用,一般还是需要将它用在脚本命令中去进行计算。
非交互式
使用bc
格式:echo "计算公式" | bc
、echo "计算公式;计算公式" | bc
- 正常计算
# 单个计算,可以不使用引号 $ echo 10/2 | bc 5 # (推荐写法)单引号跟双引号的区别跟上面 awk 一致,可以看看上面 awk 的格式介绍 # 多个计算,使用 ';' 进行分割即可 $ echo '10/2;5/2' | bc $ echo "10/2;5/2" | bc 5 2 # 保留2位小数 $ echo "scale=2;10/2;5/2" | bc 5.00 2.50
- 比较操作符
# 单个比较 $ echo '1>2' | bc 0 $ echo '1<2' | bc 1 # 多个比较 $ echo '1>2;1<2' | bc 0 1 # 将计算结果值复制变量 $ x=$(echo '1>2' | bc) $ echo $x 0 $ x=$(echo '1<2' | bc) $ echo $x 1