shell 计算器的实现示例

2024-03-01 0 187
目录
  • 简介
  • 1. 整数计算
  • 2. 小数计算
    • 2.1. bc 命令计算
    • 2.2. awk 命令计算

简介

shell 编程中的 $(( )) 、$[ ] 和 expr 仅支持整数运算,不支持小数运算,如果除法的结果为小数,那么按取整处理。小数计算需要依赖命令,这里介绍 bc、awk 两个命令的计算方法。

1. 整数计算

常用符号如下:

+:加法-:减法*:乘法/:除法^:幂运算%:取余

shell 通过$(( ))或$[ ]来计算整数,比如1+1

echo $(( 1 + 1 ))
echo $[ 1 + 1 ]

shell 计算器的实现示例

但如果将0作为除数,那么直接报错

shell 计算器的实现示例

如果计算中出现非变量的字母,那么这个字母会被当做 0 处理

shell 计算器的实现示例

注意:$(( ))和$[ ]不支持小数运算,如果除法运算的结果为小数,那么系统自动取整

echo $(( 10 / 3 ))

shell 计算器的实现示例

shell 计算器的实现示例

括号中支持变量计算

shell 计算器的实现示例

对变量做运算(修改变量)

# 定义一个变量
n=10

# 将变量+1
(( n++ ))

# 查看这个变量的结果
echo ${n}

shell 计算器的实现示例

直接对变量做计算可以直接使用(( )),举几个常用的方法

(( n++ )) # 表示变量n+1
(( n– )) # 表示变量n-1
(( n+=5 )) # 表示变量n+5
(( n-=5 )) # 表示变量n-5
(( n*=5 )) # 表示变量n*5
(( n1 = n2 + 1 )) # 表示变量n1 = 变量n2 + 1

所有的计算 n=n+1 都可以简化成 n+=1,其他计算方式同理。

除了直接使用$(( ))或$[ ]来运算,shell 还支持expr来运算整数(方法都一样)

expr [数字1] [运算符号] [数字2]

shell 计算器的实现示例

2. 小数计算

由于 $(( )) 和 $[ ] 不支持小数运算,我们需要借助其他命令来实现。这里介绍2个命令 bc 和 awk

2.1. bc 命令计算

bc 是 Linux 中一个用于计算的命令,支持高精度的数学计算,可以进行大多数基本的数学运算,包括加、减、乘、除、取模、指数、三角函数等。

执行bc会出现一个交互界面(quit 退出)

shell 计算器的实现示例

在这个交互界面中可以执行数学运算,回车键表示 "="

shell 计算器的实现示例

在脚本中我们一般不会用到交互界面,那么可以使用bc结合echo来使用。比如计算 1+1

echo \”1 + 1\” |bc

shell 计算器的实现示例

使用 echo 输出一串字符,再使用管道符传递给 bc 使其计算。就类似于这样

shell 计算器的实现示例

如果不指定小数点位数,除法的结果为小数也会直接取整

echo \”10 / 3\” |bc

shell 计算器的实现示例

如果需要显示小数位数,那么在 echo 中指定scale=n(n表示位数)

echo \”scale=2; 10 / 3\” |bc

shell 计算器的实现示例

2.2. awk 命令计算

awk 命令本身是用于文件操作,由于功能强大,但也支持计算。

比如计算:1 + 1

awk \’BEGIN{print 1 + 1}\’

shell 计算器的实现示例

awk 本身是对文件操作,如果不指定文件需要加上 BEGIN 字符来实现计算。

awk 也支持小数(默认保留5为)

awk \’BEGIN{print 10 / 3}\’

shell 计算器的实现示例

指定2位小数

awk \’BEGIN{printf \”%.2f\”, 10 / 3}\’

shell 计算器的实现示例

使用变量

a=10
b=20
awk -v \”a=${a}\” -v \”b=${b}\” \’BEGIN{printf \”%.2f\”, a / b}\’

shell 计算器的实现示例

由于 awk 中使用的是单引号,无法转译变量,所以只能通过 -v 定义两个属于 awk 本身的变量,再执行计算。也可以直接使用变量,但需要将 awk 外围的单引号换成双引号,里面的双引号需要转译

a=10
b=20
awk \”BEGIN{printf \\\”%.2f\\\”, ${a} / ${b}}\”

shell 计算器的实现示例

也支持文件中的数据计算

【求和】

awk \'{sum+=$1} END{print sum}\’ 文件名

shell 计算器的实现示例

【求平均数】

awk \'{sum += $1} END{print sum/NR}\’ 文件

shell 计算器的实现示例

【求最大值】

awk \’NR==1 {max=$1} $1>max {max=$1} END{print max}\’ 文件

shell 计算器的实现示例

【求最小值】

awk \’NR==1 {min=$1} $1<min {min=$1} END {print min}\’ 文件名

shell 计算器的实现示例

【将第1列的所有值 +10 】

awk \'{print $1 + 10}\’ 文件名

shell 计算器的实现示例

【读取文件偶数行】

awk \’NR % 2 == 0\’ 文件名

shell 计算器的实现示例

到此这篇关于shell 计算器的实现示例的文章就介绍到这了,更多相关shell 计算器内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

您可能感兴趣的文章:

  • PowerShell 语音计算器实现代码

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 linux shell shell 计算器的实现示例 https://www.u-9.cn/jiaoben/linuxshell/179867.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务