shell执行数学运算
整数:
- expr
- let
- $(())
- $[]
浮点数:
- bc
1、使用expr
♦参与运算的成员和运算符之间必须有一个空格:


♦对于那些容易被shell错解的,在它们传入expr命令之前,需要使用shell的转义字符(反斜线‘\’)将其转义。

♦要将一个数学式的运算结果赋给一个变量,需要使用命令替换来获取expr命令的输出:
我们写一个简单的shell 脚本如下:

看看运算结果:同样没有正确输出运算结果

我们修改脚本如下:

再来看运算结果:正确了

2、使用$[]
♦在bash shell中,在将一个数学运果赋给某个变量时,可以用美元符和方括号($[ operation ])将数学表达式括起来,并且不需要转义符转义。这种方式同样适用于shell脚本。并且运算成员和运算符之前可以没有空格(expr 需要有空格)。

3、使用$(())

4、使用let

bash shell数学运算只支持整数运算。要进行任何实际的数学计算,这是一个巨大的限制。

接下里我们看看怎么解决这个问题。
有几种解决方案能够客服bash中数学运的整数限制。最常的方是用内建的bash计器,叫作bc。
1. bc的基本用法
bash计算器实际上是一种编程语言,它在命令行中输入浮点表达式,然后解释并计算表达式,最后返回结果。bash计器能够识别:
数字(整数和点数)
变量(简单变量和数组)
注释(以#或C中的/* */开始的行)
表达式
编程(如if-then)
函数
可以在shell提示符下通过bc命令访问bash计器:

浮点运算是由内建变量scale控制的。必须将这个值设为你希望在计果中保留的小数位数,否则无法得到预期的结果。

scale变量的默值认是0。在scale被设置前,bash计算器的计算果不包还包含小数。在将其设成4后,bash计器显示的结果包含四位小数。-q命令行可以不显示bash计器 的欢迎信息。
除了普通数字,bash计器还能支持变量。

bc 在shell脚本中的使用:用$()或者``替换命令赋值给变量,其中options部分一般设置精度scale,和变量赋值,expression部分是计算表达式
var=$(echo "option1,option2;...; expression" | bc)

或者var=`echo "option1;option2;...;expression"|bc`

除此之外还有一种写法:利用内联输入重定向(<<)

shell执行数学运算的更多相关文章
- shell变量数学运算
shell变量数学运算 #!/bin/sh # 本脚本说明shell脚本中变量运算的用法 # 错误的用法var=1var=$var+1echo $var 输出:1+1 # 第一种用法,letvar=1 ...
- CPU到底是什么东西?它为什么能够执行数学运算?
CPU到底是什么东西?它为什么能够执行数学运算? 本文地址http://yangjianyong.cn/?p=20转载无需经过作者本人授权 简单的物理电路 先来看一张初中学过的物理电路图: 从图中我们 ...
- Linux shell 变量 数学 运算
Abstract : 1) Linux shell 中使用 let , [ ] ,(( )) 三种运算符操作 shell 变量进行简单的基本运算: 2)Linux shell 中使用 expr 与 ...
- SHELL脚本--数学运算和bc命令
bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 使用let.(()).$(())或$[]进行基本的整数运算,使 ...
- Linux Shell 06 数学运算
1.let let "var+=1" let v2= echo $var,$v2 #2,4 a.只支持整数运算 b.基本支持所有运算符(包括++,——,**) c.表达式中使用变量 ...
- Shell bash 数学运算 bc
1.bc命令可以完成浮点数的运算.其中 scale可以指定保留的小数点位数. 2.举例 例1: 例2:
- shell之数学运算
let #!/bin/bash no1=1; no2=5; let result=no1+no2 ##不能留空格 echo $result #自加 let no++ #自减 let no-- #简写 ...
- shell数学运算
shell的数学运算 branches@ubuntu:~$ var1=$[ * ] branches@ubuntu:~$ echo $var1 branches@ubuntu:~$ var2=$[$v ...
- 7 shell 数学运算
shell中数学运算的易错点: 1.在 Bash Shell 中,如果不特别指明,每一个变量的值都是字符串,无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储.即使是将整数和小数赋值给变量,它 ...
随机推荐
- T7
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> us ...
- 通过ISO镜像简单搭建本地yum仓库
本文参考链接:https://segmentfault.com/a/1190000015155966 *有时候在我们本地搭建一些Linux上的程序运行环境或者安装一些软件的时候,难免会遇到需要使用yu ...
- Linux centos5.6版本下mysql5.6主从环境安装配置
MySQL数据库支持数据库的主从复制功能,因此在集群方面具有其独特的优势,国内外大型网站架构体系中,均采用了MySQL的主从数据库配置来实现查询负载.数据库热备等功能.本人在此将如何配置实现做了个简单 ...
- Secure CRT注册码
secure CRT 把记忆的东西放在这就行了,:) SecureCRT 5.2.2的注册码 Name: Apollo InteractiveCompany: Apollo ...
- 从最近面试聊聊我所感受的.net天花板
#0 前言 入职新公司没多久,闲来无事在博客园闲逛,看到园友分享的面试经历,正好自己这段时间面试找工作,也挺多感想的,干脆趁这个机会总结整理一下.博主13年开始实习,14年毕业.到现在也工作五六年了. ...
- Linux入门之安装及相关知识。
一.VMware虚拟机安装与使用 1.1.VMware 简介 VMware是一个虚拟PC的软件,可以在现有的操 作系统上虚拟出一个新的硬件环境,相当于模拟 出一台新的PC.以此来实现在一台机器上真正 ...
- Linux\CentOS 安装 vsftpd 服务器
安装 查看电脑是否存在 vsftpd 服务器 rmp -qa|grep vsftpd 如果有就删除,没有就使用yum 安装 vsftpd yum -y install vsftpd 配置 在根目录下创 ...
- Elasticsearch系列---常见搜索方式与聚合分析
概要 本篇主要介绍常见的6种搜索方式.聚合分析语法,基本是上机实战,可以和关系型数据库作对比,如果之前了解关系型数据库,那本篇只需要了解搜索和聚合的语法规则就可以了. 搜索响应报文 以上篇建立的mus ...
- django_1:配置文件
工程下: settings.py(建议设置成如下) DATABASES #数据库配置 DEBUG = True ...
- 【原创】(十一)Linux内存管理slub分配器
背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...