shell笔记-算术运算
算术运算
在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笔记-算术运算的更多相关文章
- bash shell笔记1 脚本基础知识
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://twentyfour.blog.51cto.com/945260/505644 * ...
- Bash shell 笔记总结(一) 转自http://www.bubuko.com/infodetail-509992.html,谢谢原作者
本文是上课笔记总结,涉及细节知识点会在以后文章说明! bash脚本编程: 脚本程序:解释器解释执行: shell: 交互式接口:编程环境: shell: 能够提供一些内部命令,并且能通过PATH环境变 ...
- Linux之Shell的算术运算
在Bash的算术运算中有以下几种方法:名称 语法 范例算术扩展 $((算术式)) r ...
- Bash shell 的算术运算有四种方式
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1:使用 expr 外部程式加法 r=`expr 4 + 5`echo $r注意! '4' '+' '5' 这三者之间要有空白r=`e ...
- Java中执行shell笔记
在java中执行shell有好几种方式:第一种(exec)方式一 public static synchronized void runshell2() { File superuser = n ...
- bash shell笔记7 创建函数
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://twentyfour.blog.51cto.com/945260/525126 知 ...
- Linux shell脚本算术运算和逻辑运算
算术运算 默认不支持算数运算.所以需要特定的语法来完成, shell进行算数运算的工具: let declare (())或$(())或$[] bc let: 格式: let var=算术表达式 例如 ...
- shell笔记
shell:俗称操作系统的"外壳",就是命令解释程序. 是用户与Linux内核之间的接口. 是负责与用户交互,分析.执行用户输入的命令,并给出结果或出错提示. ...
- shell笔记-local、export用法 、declare、set
local一般用于局部变量声明,多在在函数内部使用. 1. Shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止. 2. ...
随机推荐
- 基于fasttext的情感分析,准备先做一版
博客文章地址: https://blog.csdn.net/sinat_33741547/article/details/78803766 代码地址: https://github.com/lpty/ ...
- go语言之进阶篇recover的使用
1.recover的使用 示例: package main import "fmt" func testa() { fmt.Println("aaaaaaaaaaaaaa ...
- [leetcode]Pascal's Triangle II @ Python
原题地址:https://oj.leetcode.com/problems/pascals-triangle-ii/ 题意: Given an index k, return the kth row ...
- Node.js中针对中文的查找和替换无效的解决方法
Node.js中针对中文的查找和替换无效的解决方法. //tags的值: tag,测试,帖子 var pos1 = tags.indexOf("测"); //这里返回-1 ta ...
- Docker: Unknown – Unable to query docker version: x509: certificate is valid for
I was playing around with Docker locally and somehow ended up with this error when I tried to list ...
- 编译GSLSDevil的全过程
GLSLDevil是调试OpenGL程序的工具. GLSLDevil的新版本已经改名为GLSL-Debugger, github的地址在这里:http://glsl-debugger.github ...
- IDEA 禁止自动导入引用包 取消import包
http://www.oschina.net/question/2010061_226765 我想拷贝一小段代码,或者我就是不想引入拷贝来的包,我该怎么取消掉idea的自动导入import包呢? 找到 ...
- Spatis service单元测试: 使用mock mapper的方式
转载:https://blog.csdn.net/atec2000/article/details/54346242 @RunWith(MockitoJUnitRunner.class)public ...
- ecshop二次开发 使用ecshop电子商务系统的100个小问题
自己从事B4C电子商务开发一段时间了,特别对ecshop深有体会,刚接触的时候不容易理解,下面将根据自己的经验,来总结100条关于操作ecshop电子商务系统的小问题. 1:如何修改网站"欢 ...
- Puppetmaster高可用和可扩展的方案设计
Puppet是当前devops中常用于管理系统配置和应用部署,多数会使用其C/S架构的方式来进行部署,其中puppetmaster是集群中配置管理的核心节点.在实际的生产环境中,如果因为master节 ...