热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Shell编程(三)bash数学运算

本文介绍shell中的expr和bash自带的

本文介绍一下shell中数学运算expr命令以及shell内嵌的bc计算器如何使用。


不扯虚的,往下看。


01

expr使用

expr表达式一般有两种方法:

1、expr $num1 operator $num2

2、$(($num1 operator $ number))

关于上面的operator操作符,主要有以下几种:

      除此以外,还有加、减、乘、除、余的运算符。由于上面有些运算符需要转义,所以在实际使用的时候需要加上转义字符\,总结如下:

比如,我们写个例子,用户输入一个数num,求1+2+3+...+num的结果。

参考:其中,$?的作用是获取命令的返回值。当输入num为整数时,num+1返回0,否则返回其他数。所以首先判断$num + 1的结果是否为0。如果为0,则进一步判断$num的值是否大于0。如果是正数,则进行for循环累加。

02


bc使用

bc是bash内嵌的计算器,可以支持指定精度。一般用scale=2这样来定义精确到小数点后2位,默认为0。

bc可以支持加、减、乘、除、余、指数运算。


比如:定义两个变量num1=10,num2=5

首先执行bc命令,然后执行 num3=$num1/num2 计算出两者的结果。


当然,也可以通过重定向来计算。

比如:输入两个数num1和num2

可以这样实现:

                read -p "num1: " num1

                read -p "num2: " num2

   num3=`echo "scale=4;$num1/$num2" | bc`

   echo "$num1 / $num2 = $num3"



推荐阅读
  • 本文详细介绍了如何在Linux系统中安装和配置GitLab Runner,包括添加YUM源、安装GitLab Runner以及注册Runner的具体步骤。 ... [详细]
  • 深入理解希尔排序算法
    本文详细介绍了希尔排序的原理及其相对于传统插入排序的优势,并通过实例解析了希尔排序的具体实现过程,包括代码示例及性能分析。 ... [详细]
  • 本文基于《Linux命令行与Shell脚本编程大全》第三版的第十一章内容,探讨了如何构建基本的Shell脚本,包括命令组合、脚本创建、消息显示、变量使用、输入输出重定向、管道、数学运算及脚本退出等方面的知识。 ... [详细]
  • 深入理解Shell中的特殊流程控制语句
    本文将详细介绍Shell脚本中的特殊流程控制语句,包括exit、break和continue语句的使用方法及其应用场景,帮助读者更好地掌握这些控制结构,提高脚本编程的灵活性。 ... [详细]
  • ServletContext接口在Java Web开发中扮演着重要角色,它提供了一种方式来获取关于整个Web应用程序的信息。通过ServletContext,开发者可以访问初始化参数、共享数据以及应用资源。 ... [详细]
  • Linux系统中,文件权限不仅限于常见的777、666等数值表示,还包括特殊的权限位如setuid、setgid和sticky bit,这些权限位能够赋予文件或目录额外的功能,增强系统的灵活性和安全性。 ... [详细]
  • 深入理解二叉树的遍历算法:VRL、RVL、RLV
    本文详细介绍了二叉树的不同遍历方法,包括层次遍历、先序遍历(VRL)、中序遍历(RVL)和后序遍历(RLV)。通过具体示例和代码实现,帮助读者更好地理解和应用这些遍历技术。 ... [详细]
  • 本文详细介绍了如何利用PowerShell中的Invoke-SqlCmd cmdlet来执行SQL查询,旨在为数据库管理和自动化任务提供实用的技术指导。 ... [详细]
  • 本文介绍了Kettle资源库的基本概念、类型及其管理方法,同时探讨了Kettle的不同运行方式,包括图形界面、命令行以及API调用,并详细说明了日志记录的相关配置。 ... [详细]
  • 本文记录了Android学习的初期阶段,包括Android的基本架构、Dalvik虚拟机与JVM的区别、ADB工具的使用以及应用程序的打包安装流程。 ... [详细]
  • 个人用户可借鉴的企业级三大安全准则
    在数字时代,个人数据安全变得尤为重要。本文将探讨三个来自企业实践的安全原则,这些原则不仅适用于企业,也能帮助个人用户提升自身的信息安全防护水平。 ... [详细]
  • 本文档详细介绍了2017年8月31日关于MySQL数据库备份与恢复的教学内容,包括MySQL日志功能、备份策略、备份工具及实战演练。 ... [详细]
  • nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 在Ubuntu 16.04中使用Anaconda安装TensorFlow
    本文详细介绍了如何在Ubuntu 16.04系统上通过Anaconda环境管理工具安装TensorFlow。首先,需要下载并安装Anaconda,然后配置环境变量以确保系统能够识别Anaconda命令。接着,创建一个特定的Python环境用于安装TensorFlow,并通过指定的镜像源加速安装过程。最后,通过一个简单的线性回归示例验证TensorFlow的安装是否成功。 ... [详细]
  • 本文介绍了如何使用 useradd 命令来创建用户及其相关组,以及如何通过指定参数来定制用户的属性,如UID、GID、家目录等。同时,也探讨了使用 userdel 命令安全地删除用户及其所有相关文件的方法。 ... [详细]
author-avatar
519cxf
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有