shell(7):四则运算
shell 四则运算:expr,let,bc,(()),
1、expr的用法:
expr命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串。
详细使用方式:expr --help
- expr 表达式
表达式说明:
- 用空格隔开每个项;
- 用 / (反斜杠) 放在 shell 特定的字符前面;
- 对包含空格和其他特殊字符的字符串要用引号括起来
使用实例:
1、计算字串长度
- > expr length "this is a test"
- 14
2、抓取字串
- > expr substr "this is a test" 3 5
- is is
3、抓取第一个字符数字串出现的位置
- > expr index "sarasara" a
- 2
4、整数运算
- > expr 14 % 9
- 5
- > expr 10 + 10
- 20
- > expr 1000 + 900
- 1900
- > expr 30 / 3 / 2
- 5
- > expr 30 \* 3 (使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义)
- 90
- > expr 30 * 3
- expr: Syntax error
2、let的用法:
let 命令是 BASH 中用于计算的工具,用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量。如果表达式中包含了空格或其他特殊字符,则必须引起来。
语法格式
- let arg [arg ...]
参数说明:
arg:要执行的表达式
实例:
自加操作:let no++
自减操作:let no--
简写形式 let no+=10,let no-=20,分别等同于 let no=no+10,let no=no-20。
以下实例计算 a 和 b 两个表达式,并输出结果:
- #!/bin/bash
- let a=5+4
- let b=9-3
let c=7/4
let d=4*6
let e=1+4*6+3*2+2
let f=1+4*6+3*2+2+8/5- echo $a $b $c $d $e $f
以上实例执行结果为:
9 6 1 24 33 34
有些用法区别去expr:
let 不需要空格隔开表达式的各个字符。而 expr 后面的字符需要空格隔开各个字符。
- # expr 实例
- $ s=`expr 2 + 3`
- $ echo $s
- 5
- # let 实例
- $ let s=(2+3)*4
- $ echo $s
3、(()) 的用法:
echo $((运算表达式))
echo $((1+4*6+3*2+2+8/7))
34
4、bc的用法
bc 命令是任意精度计算器语言,通常在linux下当计算器用。
它类似基本的计算器, 使用这个计算器可以做基本的数学运算。
常用的运算:
- + 加法
- - 减法
- * 乘法
- / 除法
- ^ 指数
- % 余数
语法
- bc(选项)(参数)
选项值
- -i:强制进入交互式模式;
- -l:定义使用的标准数学库
- ; -w:对POSIX bc的扩展给出警告信息;
- -q:不打印正常的GNU bc环境信息;
- -v:显示指令版本信息;
- -h:显示指令的帮助信息。
参数
文件:指定包含计算任务的文件。
实例
- $ bc
- bc 1.06.95
- Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
- This is free software with ABSOLUTELY NO WARRANTY.
- For details type `warranty'.
- 2+3
- 5
- 5-2
- 3
- 2+3*1
- 5
输入 quit 退出。
通过管道符
- $ echo "15+5" | bc
- 20
scale=2 设小数位,2 代表保留两位:
- $ echo 'scale=2; (2.777 - 1.4744)/1' | bc
- 1.30
bc 除了 scale 来设定小数位之外,还有 ibase 和 obase 来其它进制的运算:
- $ echo "ibase=2;111" |bc
- 7
进制转换
- #!/bin/bash
- abc=192
- echo "obase=2;$abc" | bc
- <pre>
- <p>
- 执行结果为:11000000,这是用bc将十进制转换成二进制。</p>
- <pre>
- #!/bin/bash
- abc=11000000
- echo "obase=10;ibase=2;$abc" | bc
执行结果为:192,这是用bc将二进制转换为十进制。
计算平方和平方根:
- $ echo "10^10" | bc
- 10000000000
- $ echo "sqrt(100)" | bc
- 10
5、shell 浮点数除法计算:
样例:

echo $(printf "%.2f" `echo "scale=2;1/3"|bc`)



shell(7):四则运算的更多相关文章
- shell实现四则运算简单方法
在刚刚学习写shell 批处理时候,进行逻辑运算中,少不了需要进行基础的:四则运算,这里说说在linux shell 里面简单的实现方法.1.简单方法$ b=$((5*5+5-3/2)) $ echo ...
- Linux shell命令中expr
在Linux shell命令中expr虽然不是很起眼,但是它的作用是非常大的!到目前为止,我个人看来最大的作用就是两个——四则运算和字符串的操作. 先说四则运算,在Shell中四则运算不能简简单单的加 ...
- 一点一滴学shell-Shell expr的用法 (转)
原文链接:http://desheng666.blog.163.com/blog/static/4908408220121643953425/ expr命令一般用于整数值,但也可用于字符串.一般格式为 ...
- [Linux 维护]收集centos系统性能指标
#!/bin/bash # awk 'END{print}' get the last row iplist=$(cat ~/fanr/shell/Weekly/ip.list) for _IP in ...
- shell脚本中四则运算
方法一: (()) ##在括号里面可以直接对变量进行操作 例如:vim test.sh 方法二: let ##let后面加要操作的运算 例如: 方法三: expr ...
- shell 四则运算
test.sh #/bin/bash read -p "请输入第一个数:" a read -p "请输入第二个数:" b if [ $a -gt $b ] th ...
- shell if 浮点数比较
转shell中的浮点数比较http://nigelzeng.iteye.com/blog/1604640 博客分类: Bash Shell shell比较浮点数 由于程序需要,我要判断一个浮点数是否 ...
- shell浅谈之十函数
转自:http://blog.csdn.net/taiyang1987912/article/details/39583179 一.简介 Linux Shell编 程中也会使用到函数,函数可以把大的命 ...
- shell编程总结
一.学习 shell脚本之前的基础知识 [linux shell中的特殊符号] 1. * :代表零个或多个字符或数字. test后面可以没有任何字符,也可以有多个字符,总之有或没有都能匹配出来. 2. ...
随机推荐
- T-Sql常用语句
1.用bcp导出txt数据 DECLARE ), ) BEGIN , ), '/', '-'); SET @bcp = 'bcp WebStat.dbo.[PV_HIS_' + @date + '] ...
- Golang 如何从socket读出所有数据
第一种: func read(conn *net.Conn) error { defer conn.Close() buf := make([]byte, 0, 4096) len := 0 for ...
- 接口测试-Http状态码-postman上传文件
转自:https://www.cnblogs.com/jiadan/articles/8546015.html 一. 接口 接口:什么是接口呢?接口一般来说有两种,一种是程序内部的接口,一种是系统 ...
- [抄]OKR
OKR是Objective Key Result KPI是KeyPointIndicator OKR概览 OKR是一个目标管理工具.即目标与关键成果法,是一套明确和跟踪目标及其完成情况的管理工具和方法 ...
- inotify-tools命令使用讲解
inotify-tools 是为linux下inotify文件监控工具提供的一套c的开发接口库函数,同时还提供了一系列的命令行工具,这些工具可以用来监控文件系统的事件. inotify-tools是用 ...
- 【转】expect语言学习笔记
上周mentor要求我写一个unix shell 脚本, 以便半夜让服务器自动编译image. 其实我觉得每天我走的时候让服务器编译不也挺好的么... 我懒,假装没听见好不容易赖过去了. ...
- 在Linux CentOS 6.6上安装RedisLive
Real time dashboard for redis 安装必须软件 1.安装pip到指定的python版本下面: curl -O https://bootstrap.pypa.io/get-pi ...
- flume+elasticsearch+kibana遇到的坑
在elasticsearch中存储数据的行为就叫做索引(indexing),不过在索引之前,我们需要明确数据应该存储在哪里. 在elasticsearch中,文档归属于一种类型(type),而这些类型 ...
- numpy中的np.random.mtrand.RandomState
1 RandomState 的应用场景概述 在训练神经网络时,苦于没有数据,此时numpy为我们提供了 “生产” 数据集的一种方式. 例如在搭建神经网络(一)中的 4.3 准备数据集 章节中就是采用n ...
- Eclipse中Ant的配置与测试
在Eclipse中使用Ant Ant是Java平台下非常棒的批处理命令执行程序,能非常方便地自动完成编译,测试,打包,部署等等一系列任务,大大提高开发效率.如果你现在还没有开始使用Ant,那就要赶快开 ...