我的编程空间,编程开发者的网络收藏夹
学习永远不晚
位置:首页-资讯-运维

Bash 初学者系列 5:在 bash 中进行数学运算

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Bash 初学者系列 5:在 bash 中进行数学运算

  今天我们将介绍在 bash 中使用运算符来执行算术运算。

  在编写 bash 脚本的时候,经常会遇到需要计算数学结果的情况,比如需要计算磁盘剩余空间、文件大小、密码到期时间、主机数量、网络带宽等。

  今天我们将介绍在 bash 中使用运算符来执行算术运算。

  总体来说,bash 中的算术运算符包括以下这些:

运算符 描述
+ 加法运算
- 减法运算
* 乘法运算
/ 整除
% 求余
** 幂运算

  在bash脚本中执行加法和减法

  为了便于演示,我们创建一个名为 addition.sh 的脚本文件,添加两个文件的大小(以字节 byte 为单位),并输出。

  为此,大家需要了解 bash 脚本中的参数,还有 cut 以及 du 命令。

  du 命令计算文件的大小,其输出包括两列,分别为文件大小和文件名,cut 命令取出其中的第一列(即文件大小);du 命令的输出通过​​管道重定向​​​传递给 cut 命令。

  脚本如下所示:​

  复制

  1.  #!/bin/bash

  2.  fs1=$(du -b $1fs2=$(du -b $2

  3.  echo "File size of $1 is: $fs1"echo "File size of $2 is: $fs2"

  4.  total=$(($fs1 + $fs2))

  5.  echo "Total size is: $total"

  在运行上述脚本的时候,需要给出两个文件名作为参数。比如,我们将文件 /etc/passwd 和 /etc/group 作为参数来运行该脚本:​

  复制

  1.  $ ./addition.sh /etc/passwd /etc/groupFile size of /etc/passwd is: 2795File size of /etc/group is: 1065Total size is: 3860

  在 addition.sh 脚本中最重要的一行为:

  复制

  1.  total=$(($fs1 + $fs2))

  上面代码使用 运算符 + 将两个数字 $fs1 和 $fs2 相加。这里需要注意的是,算术表达式需要使用双括号将其括起来:

  复制

  1.  $((arithmetic-expression))

  也可以使用减号运算符 - 来进行减法运算。比如,下面的代码,其结果将为 7:

  复制

  1.  sub=$((10-3))

  执行乘法和除法

  我们创建一个名为 giga2mega.sh 的脚本文件,用于将 GB 转为 MB,如下所示:​

  复制

  1.  #!/bin/bash

  2.  GIGA=$1MEGA=$(($GIGA

  3.  echo "$GIGA GB is equal to $MEGA

  下面我们来执行一下,看看 4GB 相当于多少 MB:​

  复制

  1.  $ ./giga2mega.sh 44 GB is equal to 4096 MB

  在这里,我们使用了乘法(*)运算符将 GB 数乘以1024,得到等效的兆字节数:

  复制

  1.  MEGA=$(($GIGA * 1024))

  类似的,将 GB 转为 KB 也是一样的做法:

  复制

  1.  KILO=$(($GIGA * 1024 * 1024))

  除法运算符 / 用于两个数相除,比如下面例子:

  复制

  1.  div=$((20 / 4))

  注意,这里是整除,所有的小数部分会丢失。比如,计算 5 除以 2,其结果为 2:​

  复制

  1.  $ div=$((5 / 2))$echo $div2

  要实际计算两个数相除的结果(获取十进制的结果),可使用 bc 命令,比如,还是计算 5 除以 2,可参照如下代码:​

  复制

  1.  echo "5/2"2.50000000000000000000

  另外,在其他算术运算符中也可以使用 bc 命令:  

 

  使用幂和余数(模)

  下面我们使用幂运算符 ** 进行求幂运算。首先创建一个名为 power.sh 的脚本,接受两个数字作为参数:a 和 b,然后计算 a 的 b 次幂,如下代码所示:​

  复制

  1.  #!/bin/basha=$1b=$2result=$((a**b))echo "$1^$2=$result"

  我们来运行一下:​

  复制

  1.  $ ./power.sh 2 32^3=8$ ./power.sh 3 23^2=9$ ./power.sh 5 25^2=25$ ./power.sh 4 24^2=16

  计算余数使用运算符 %,如下所示:

  复制

  1.  rem=$((17%5))

  其结果为 2,大家可以运行试一下。

  来源: TIAP

  >>>>>>点击进入系统运维专题

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Bash 初学者系列 5:在 bash 中进行数学运算

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Bash 初学者系列 5:在 bash 中进行数学运算

今天我们将介绍在 bash 中使用运算符来执行算术运算。
Bash 初学者系列 5:在 bash 中进行数学运算
Bash运算2024-04-23

Bash 初学者系列 8:bash 中的循环

循环是 bash 脚本中一个很重要的功能,用途广泛。本篇文章我们介绍三种不同的循环,然后利用循环遍历数组。
Bash 初学者系列 8:bash 中的循环
Bash循环2024-04-23

Bash 初学者系列 6:bash 中的字符串操作

今天我们就来介绍一下字符串操作函数,如何获取字符串长度、连接字符串、提取子字符串、替换子字符串等。
Bash 初学者系列 6:bash 中的字符串操作
Bash字符串2024-04-23

Bash 初学者系列 7:bash 中的条件语句(if else)

今天我们介绍一下如何在 bash 中使用条件语句。
Bash 初学者系列 7:bash 中的条件语句(if else)

编程热搜

  • 人工智能你要知道的那些事
    编程学习网:早在1g时代我们只能接打电话。2g时代可以打电话发短信,玩早期的qq,但网络十分不稳定。3g时代带给我们很大的改变就是宽带上网,视频通话,看视频,听歌玩游戏。那时的人们认为4g无用,认为不会有什么改变,但当4g出来时我们才发现这是一次质的飞跃。
    人工智能你要知道的那些事
  • 人工智能无人机管制到底有多难?
    编程学习网:近日,一段“重庆网红列车遭无人机撞击逼停”的视频,在网络热传。
    人工智能无人机管制到底有多难?
  • 人工智能与人类
    欢迎各位阅读本篇,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。本篇文章讲述了人工智能与人类,编程学习网教育平台提醒各位:本篇文章纯干货~因此大家一定要认真阅读本篇文章哦!
    人工智能与人类
  • 两小时 Elasticsearch 性能优化,直接把慢查询干团灭了……
    公共集群的机器负载分布不均衡的问题,业务的查询和流量不可控等各种各样的问题,要节省机器资源就一定会面对这种各种各样的问题,除非土豪式做法,每个业务都拥有自己的机器资源,这里面有很多很多颇具技术挑战的事情。
    两小时 Elasticsearch 性能优化,直接把慢查询干团灭了……
  • 关于OpenStack的架构详细讲解
    欢迎各位阅读本篇文章,OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。本篇文章讲述了关于OpenStack的架构详细讲解,编程学习网教育平台提醒各位:本篇文章纯干货~因此大家一定要认真阅读本篇文章哦!
    关于OpenStack的架构详细讲解
  • AI &神经网络
    欢迎各位阅读本篇,本篇文章讲述了AI &神经网络,人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。神经网络内容丰富,反映了当前国内外该领域的最新研究成果和动向,编程学习网教育平台提醒各位:本篇文章纯干货~因此大家一定要认真阅读本篇文章哦!
    AI &神经网络
  • 人工智能对于网络安全的优缺点
    编程学习网:如今,产生的数据比以往任何时候都要多。由于数据分析工具的发展,各行各业的组织都更加重视大数据的收集和存储。
    人工智能对于网络安全的优缺点
  • Bash 初学者系列 7:bash 中的条件语句(if else)
    今天我们介绍一下如何在 bash 中使用条件语句。
    Bash 初学者系列 7:bash 中的条件语句(if else)
  • 人工智能机器学习的重要趋势是什么?
    编程学习网:在竞争日益激烈的技术市场中,从高科技初创公司到全球跨国公司都将人工智能视为关键竞争优势。但是,人工智能行业发展如此之快,以至于很难跟踪最新的研究突破和成就,甚至很难应用科学成果来实现业务成果。
    人工智能机器学习的重要趋势是什么?
  • 人工智能为什么会觉得Matplotlib用起来困难?
    编程学习网:Matplotlib是一个流行的Python库,可以很容易地用于创建数据可视化。
    人工智能为什么会觉得Matplotlib用起来困难?

目录