算术运算
在Bash shell环境中,可以利用let、(( ))和[]执行基本的算术操作。而在进行高级操作时,
expr和bc这两个工具也会非常有用。
let命令可以直接执行基本的算术操作。当使用let时,变量名之前不需要再添加$,

[root@server0 ~]# a=5
[root@server0 ~]# let a++ #自加操作
[root@server0 ~]# echo $a
6
[root@server0 ~]# b=4
[root@server0 ~]# let b-- #自减操作
[root@server0 ~]# echo $b
3

[root@server0 ~]# x=1
[root@server0 ~]# y=2
[root@server0 ~]# let x+=100 #简写形式
[root@server0 ~]# let y-=100
[root@server0 ~]# echo $x
101
[root@server0 ~]# echo $y
-98

其它方法:
使用操作符[ ]
[root@server0 ~]# q=100
[root@server0 ~]# w=200
[root@server0 ~]# result=$[ q + w ]
[root@server0 ~]# echo $result
300
[root@server0 ~]# result2=$[ q + 123 ]
[root@server0 ~]# echo $result2
223
[root@server0 ~]# result3=[ $w + 1 ]
bash: 200: command not found...
[root@server0 ~]# result3=$[ $w + 1 ]
[root@server0 ~]# echo $result3
201

使用操作符(()),同上:
[root@server0 ~]# result4=(($q + 1))
-bash: syntax error near unexpected token `('
[root@server0 ~]# result4=(( $q + 1 ))
-bash: syntax error near unexpected token `('
[root@server0 ~]# result4=$(( $q + 1 )) #注意,括号前后有空格
[root@server0 ~]# echo $result4
101
[root@server0 ~]# result5=$(( q + 1 ))
[root@server0 ~]# echo $result5
101

使用expr方式
[root@server0 ~]# result6=`expr $q + 1 ` #中间可以引用变量
[root@server0 ~]# echo $result6
101
[root@server0 ~]# result7=`expr 1 + 2 `
[root@server0 ~]# echo $result7
3
[root@server0 ~]# result8=$(expr $w + 1) #括号加不加空格都不影响,但是
[root@server0 ~]# echo $result8
201
[root@server0 ~]# result8=$( expr $w +1 ) #但是算术运算符号左右一定要加空格
expr: syntax error
[root@server0 ~]# result8=$( expr $w+1 )
[root@server0 ~]# echo $result8
200+1
以上这些方法只能用于整数运算,而不支持浮点数。

bc命令:
bc是一个用于数学运算的高级工具,这个精密计算器包含了大量的选项。我们可以
借助它执行浮点数运算并应用一些高级函数:
[root@server0 ~]# no=54
[root@server0 ~]# result=`echo "$no * 1.5" | bc`
[root@server0 ~]# echo $result
81.0
[root@server0 ~]# echo "4 * 0.56" | bc
2.24
其他参数可以置于要执行的具体操作之前,同时以分号作为定界符,通过stdin传递给bc。
设定小数精度。在下面的例子中,参数scale=2将小数位个数设置为2。因此,
bc将会输出包含两个小数位的数值。
[root@server0 ~]# echo "scale=2;3/8" | bc
.37
进制转换。用bc可以将一种进制系统转换为另一种。来看看如何将十进制转换成
二进制,然后再将二进制转换回十进制:
[root@server0 ~]# no=100
[root@server0 ~]# echo "obase=2;$no" | bc
1100100
[root@server0 ~]# no2=1100100
[root@server0 ~]# echo "obase=10;ibase=2;$no2" | bc
100
计算平方以及平方根:
[root@server0 ~]# echo "sqrt(100)" | bc
10
[root@server0 ~]# echo "10^10" | bc
10000000000

shell笔记-算术运算的更多相关文章

  1. bash shell笔记1 脚本基础知识

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://twentyfour.blog.51cto.com/945260/505644 * ...

  2. Bash shell 笔记总结(一) 转自http://www.bubuko.com/infodetail-509992.html,谢谢原作者

    本文是上课笔记总结,涉及细节知识点会在以后文章说明! bash脚本编程: 脚本程序:解释器解释执行: shell: 交互式接口:编程环境: shell: 能够提供一些内部命令,并且能通过PATH环境变 ...

  3. Linux之Shell的算术运算

    在Bash的算术运算中有以下几种方法:名称                语法                    范例算术扩展            $((算术式))              r ...

  4. Bash shell 的算术运算有四种方式

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1:使用 expr 外部程式加法 r=`expr 4 + 5`echo $r注意! '4' '+' '5' 这三者之间要有空白r=`e ...

  5. Java中执行shell笔记

    在java中执行shell有好几种方式:第一种(exec)方式一 public static synchronized void runshell2() {    File superuser = n ...

  6. bash shell笔记7 创建函数

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://twentyfour.blog.51cto.com/945260/525126 知 ...

  7. Linux shell脚本算术运算和逻辑运算

    算术运算 默认不支持算数运算.所以需要特定的语法来完成, shell进行算数运算的工具: let declare (())或$(())或$[] bc let: 格式: let var=算术表达式 例如 ...

  8. shell笔记

    shell:俗称操作系统的"外壳",就是命令解释程序.     是用户与Linux内核之间的接口.     是负责与用户交互,分析.执行用户输入的命令,并给出结果或出错提示.    ...

  9. shell笔记-local、export用法 、declare、set

    local一般用于局部变量声明,多在在函数内部使用.     1.    Shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止.     2. ...

随机推荐

  1. Martin Fowler谈微服务的优缺点

    很多开发团队已经认识到微服务架构比单体架构更优越.但是也有其他团队感觉到这是一种消弱生产力的负担.就像任何软件架构,微服务架构同样有利弊.为了能做出一个明智的选择,你必须了解这些应用并将它们运用到你特 ...

  2. json传输二进制的方案【转】

    本文转自:http://wiyi.org/binary-to-string.html json 是一种很简洁的协议,但可惜的是,它只能传递基本的数型(int,long,string等),但不能传递by ...

  3. iOS开发-Block回调

    关于Block之前有一篇文章已经写过一篇文章Object-C-代码块Block回顾,不过写的比较浅显,不能体现出Block在实际开发中的重要性,关于Block的基础知识,可以参考之前的博客.在实际开发 ...

  4. 基于Deep Learning的中文分词尝试

    http://h2ex.com/1282 现有分词介绍 自然语言处理(NLP,Natural Language Processing)是一个信息时代最重要的技术之一,简单来讲,就是让计算机能够理解人类 ...

  5. RAMPS1.4 3d打印控制板接线与测试4

    如果之前的操作都顺利,现在就可以插上USB线,打开printrun上位机软件了.mega2560刚刚接通电源时,RAMPS板子上的LED1(绿色)会闪几下.这说明mega2560板子中的固件正在启动. ...

  6. Mac下brew/memcached/nginx/iterm/zsh的安装

    brew  https://www.cnblogs.com/fireworld/p/8609190.html memcached https://blog.csdn.net/whereismatrix ...

  7. 单元测试中用@Autowired 报null (空指针异常)

    原因是因为,单元测试不依赖于容器,所以自动注入也就存在问题 (单元测试中加@Autowired注解亲自测过是不行,不知道这样理解的是否正确)

  8. 1418 This function has none of DETERMINISTIC,NO SQL,or R

    标签: [err]1418 函数创建报错 分类: 菜鸟DBA之MySQL --------------------------------------------------------------- ...

  9. 【Android界面实现】使用PagerTabStrip实现有滑动标签的Viewpager

    在ViewPager这样的能够滑动的控件上,总是有非常多的文章能够做.上次的文章,我们实现了一个自己定义的ViewPager的指示器,这篇文章,我们主要是想利用Android自带的控件,实现一个指示器 ...

  10. ArcGIS Add-in ValidateAddInXMLTask”任务意外失败

    晚上收假回来调一Add-In程序,遇到编译错误:"ValidateAddInXMLTask"任务意外失败. error MSB4018: System.IO.FileNotFoun ...