Shell 基本(整数、小数、浮点数)运算($[]、$(())、let、expr、awk、bc)

简介: Shell 基本(整数、小数、浮点数)运算($[]、$(())、let、expr、awk、bc)

一、基本表达式

  • 运算表达式:
  • 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

  • bcLinux下的计算机工具模块,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 "计算公式" | bcecho "计算公式;计算公式" | 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
相关文章
|
6月前
|
Shell C++ 开发者
【Shell 编程指南】Shell运算操作符之$[]详解
【Shell 编程指南】Shell运算操作符之$[]详解
49 0
|
4月前
|
Shell Linux Perl
shell 编程中 awk ,wc ,$0,$1 等 命令的使用总结
shell 编程中 awk ,wc ,$0,$1 等 命令的使用总结
128 0
|
6月前
|
Shell Linux Perl
Linux|如何允许 awk 使用 Shell 变量
Linux|如何允许 awk 使用 Shell 变量
89 2
|
5月前
|
Shell Linux Python
Shell 数学计算:轻松掌握算术运算基本功
在Shell脚本中进行数学计算需借助特定方法。`(())`用于高效整数运算,如`((1+1))`,而`bc`处理小数,如`echo &quot;3.14 + 2.86&quot; | bc`。`let`与`(())`相似,`expr`较繁琐,`declare -i`仅限基础整数运算。使用`bc`时,`scale`定义小数精度。通过这些工具,Shell脚本也能实现复杂的数学计算。
86 0
|
6月前
|
Shell Perl
shell学习(十) 【shell awk基本语法】
shell学习(十) 【shell awk基本语法】
33 1
|
6月前
|
存储 Shell 索引
第七章 Shell文本处理三剑客之awk
第七章 Shell文本处理三剑客之awk
|
6月前
|
Shell 程序员 Linux
【Shell 编程指南】shell运算操作符之(())
【Shell 编程指南】shell运算操作符之(())
48 0
|
6月前
|
算法 Shell Linux
【Shell 命令集合 文档编辑 内建命令】Linux数值运算和赋值操作 let命令使用指南
【Shell 命令集合 文档编辑 内建命令】Linux数值运算和赋值操作 let命令使用指南
61 0
|
6月前
|
Shell Linux C语言
【Shell 命令集合 文档编辑】Linux 种算术运算 expr命令使用指南
【Shell 命令集合 文档编辑】Linux 种算术运算 expr命令使用指南
86 0
|
11月前
|
Shell 数据处理 Perl
shell脚本里的三剑客之一awk
shell脚本里的三剑客之一awk
89 2