第一种,使用((表达式)):

a=3
((b=a+2))
echo $b

第二种使用let:

let "c=$a+4"
echo $c

第三种,使用expr表达式(注意空格不能少):

#注意空格和反引号
d=`expr 4 + 3`
echo $d

第四种,比较常用,就是放在$[ expression]中,其实这才是bash的推荐的标准处理方法

a=4
b=$[$a-9]
#b=-5
echo $b

在C风格的for循环中,则可以如下使用:

#!/bin/bash
for (( a=1, b=10; a<=10; a++, b-- ))
do
((c=a*b))
echo $c
done

一般bash只能处理整数运算,要处理浮点书,必须借助于bc(bash计算器),基本格式如下:

variable=`echo "option;expression"|bc`

注意上面的反引号(一般位于tab建的上方,感叹号!的左边),不是单引号。

例如要计算3.25/3,精确到小数点后4位:

var=`echo "scale=4;3.25/3"|bc`
#var=1.0833
echo $var

再看一个例子:

a=10.5
b=2.7
c=`echo "scale=5;$a /$b "|bc`
#c=3.88888
echo $c

如果需要计算的浮点表达式比较多,可以放在多行上,格式如下:

variable=`bc << EOF
options
statements
expressions
EOF
`

下面是一个实际例子:

#!/bin/bash
a=1.23432
b=2.45
c=6.0
d=5
#注意:
#var=ab+cd,ab和cd只是bc中的变量,不能在bash中使用
var=`bc << EOF
scale=4
ab=($a+$b)
cd=($c-$d)
ab+cd
EOF
`
#var=4.68342
echo $var

bash中的数值运算的更多相关文章

  1. Shell基础(二):Shell中的数值运算、条件测试操作、使用if选择结构

    一.Shell中的数值运算 目标: 本案例要求熟悉Linux Shell环境的特点,主要练习以下操作: 1> 使用expr.$[ ].let等整数运算工具:定义变量X=1234,然后计算X与78 ...

  2. [Shell]Bash变量:数值运算及运算符

    ------------------------------------------------------------------------------------------------- Sh ...

  3. 在shell script中进行数值运算的两种方法

    方法1:使用"$((计算式))"的方式进行数值运算,不需要使用declare命令显示声明数值型变量来存储计算结果: 方法2:使用declare命令配合"-i"选 ...

  4. linux中的数值运算

    一.declare 作用:声明变量类型,bash默认变量为字符串类型的,并且字符串在拼接时直接拼接,不需要加号 使用方法: 二.数值运算 加法运算 a= b= c=$(($a+$b)) echo $c

  5. shell中的数值运算

    By francis_hao    Oct 2,2017   本文摘录自bash的man手册.   算数运算相关的形式 形式 含义 ((expression)) expression按照下面描述的算术 ...

  6. 认识与学习BASH(中)

    1.在设置变量中:单引号与双引号的最大不同:双引号能保有变量的内容,单引号仅能是一般字符 2.反单引号(`)作用:在一串指令中,在‘之内的指令将会被先执行,其结果将作为外部的输入信息. locate指 ...

  7. shell简单用法笔记(shell中数值运算)二

    shell中变量值,如果不手动指定类型,默认都是字符串类型: 例如: a= b= c=$a+#b echo $c 结果会输出:123+456 shell中,如果要进行数值运算,可以通过一下方法: 方法 ...

  8. bash中(),{},(()),[],[[]]的区别

    前言:在bash中遇到各种括号,同时在进行字符数值比较判定时,总是不断出现问题,于是通过参考<advanced bash-scripting guide>,同时在centos 6.7版本上 ...

  9. bash中的浮点数处理

        Bash中的变量没有数据类型的定义,这样,在处理字符串和数值时会带来麻烦.例如,使用-eq比较数值,==比较字符串等.另外,Bash中常用的let.expr仅支持整数运算,不支持浮点数计算.要 ...

随机推荐

  1. DataSet DataTable操作

    DataSet ds = new DataSet();            DataTable dt = new DataTable("OrderList");          ...

  2. html 5 canvas 绘制太极demo

    一个练习canvas的小案例.其中若有小问题,欢迎大神拍砖……^_* 代码效果预览地址:http://code.w3ctech.com/detail/2500. <div class=" ...

  3. javascript跑马灯抽奖

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. LeetCode题解——4Sum

    题目: 给定一个数组,找出其中和为0的所有4个数组合,每个组合内的4个数非递降. 解法: ①先排序,然后利用4个指针,前两个遍历,后两个在第二个指针之后的部分里夹逼,时间O(N3). ②或者利用一个哈 ...

  5. POJ 1004 解题报告

    1.题目描述: http://poj.org/problem?id=1004 2.解题过程 这个题目咋一看很简单,虽然最终要解出来的确也不难,但是还是稍微有些小把戏在里面,其中最大的把戏就是float ...

  6. 安装 RabbitMQ C#使用-摘自网络(包括RabbitMQ的配置)

    1.什么是RabbitMQ.详见 http://www.rabbitmq.com/ . 作用就是提高系统的并发性,将一些不需要及时响应客户端且占用较多资源的操作,放入队列,再由另外一个线程,去异步处理 ...

  7. Varnish – 高性能http加速器

    Varnish是一款高性能且开源的反向代理服务器和http加速器.与传统的Squid相比,Varnish具有性能更高.速度更快.管理更方便 等诸多优点.作者Poul-Henning Kamp是Free ...

  8. Jvm基础(2)-Java内存模型

    Jvm基础(2)-Java内存模型 主内存和工作内存 Java内存模型包括主内存和工作内存两个部分:主内存用来存储线程之间的共享变量:而工作内存中存储每个线程的相关变量. 如下图所示: 需要注意的是: ...

  9. linux下的调试工具ltrace与strace

    ltrace能够跟踪进程的库函数调用,它会显现出哪个库函数被调用,而strace则是跟踪程序的每个系统调用. 下面是一个ltrace与strace的对比   1)系统调用的输出对比   我们用输出he ...

  10. json网页预览插件