shell脚本--数值计算
原生bash不支持简单的数学运算,即使是最简单的加减乘除
但是,可以使用$[]和expr来实现整数运算
如果要实现小数运算,可以使用bc命令
使用$[]来实现:
#!/bin/bash
#文件名:test.sh echo $[ 1 + 3 ] echo $[ $1 + $2 ]
echo $[ $1 - $2 ]
echo $[ $1 * $2 ] #此时不用对*转义
echo $[ $1 / $2 ]
echo $[ $1 % $2 ]
执行脚本:
ubuntu@ubuntu:~$ ./test.sh 10 20
4
30
-10
200
0
10
ubuntu@ubuntu:~$
主要注意的是:
1、运算符和两边要进行计算的数值之间,有空格
2、虽然两个方括号和要进行计算的数值之间可以没有空格,但是强烈建议增加一个空格,因为后面会学到很多时候,方括号和参数之间都有空格。
使用expr实现:
#!/bin/bash
#文件名:test.sh #expr是一个用于数值计算的命令
#此时运算符号两边必须加空格,不加空格会原样输出,不会计算
expr 1 + 3 #命令行第2个参数和第3个参数求和
expr $1 + $2
expr $1 - $2
expr $1 * $2 #失败
expr $1 \* $2 #因为乘号*在shell中有特殊的含义,所以要转义
expr $1 / $2 #除法取商
expr $1 % $2 #除法取模
运行脚本:
ubuntu@ubuntu:~$ ./test.sh 10 20
4
30
-10
expr: syntax error
200
0
10
ubuntu@ubuntu:~$
使用expr之前先了解一下反引号``的功能,反引号的功能是将反引号括起来的内容执行,没错,就是执行,这就意味着,反引号括起来的是一条命令,此时是一个命令的运行结果,而结果就是一条命令,并且反引号不能单独使用,要将包含反引号及其括起来的语句赋值给一个变量,否则出错;如果不想将其赋给一个变量,就不要用反引号,直接写反引号中的内容,因为其内容就是一条命令。
#!/bin/bash
#文件名:test.sh #此时运算符号两边必须加空格
#必须将反引号中命令的结果赋给一个变量
num=`expr 1 + 3`
echo $num #命令行第2个参数和第3个参数求和
num=`expr $1 + $2`
echo $num #乘法运算符仍要转义
num=`expr $1 \* $2`
echo $num
运行脚本:
ubuntu@ubuntu:~$ ./test.sh 10 20
4
30
200
ubuntu@ubuntu:~$
使用bc进行浮点数计算
ubuntu@ubuntu:~$ echo 1.4*4 | bc #乘号和运算数之间没有空格时,不用转义
5.6
ubuntu@ubuntu:~$ echo 1.4 \* 4 | bc #乘号和运算数之间有空格时,必须转义
5.6
ubuntu@ubuntu:~$ echo 1.5-4 | bc
-2.5
鉴于计算时很难记错,运算符之间是否要加空格,统一推荐加,如果是乘号*,则转义。
shell脚本--数值计算的更多相关文章
- shell 脚本阅读之二——ltp工具下的runltp
#!/bin/sh ################################################################################ ## ## ## ...
- 《Linux命令行与shell脚本编程大全》第二十一章 sed进阶
本章介绍一些sed编辑器提供的高级特性. 21.1 多行命令 按照之前的知识,所有的sed编辑器命令都是针对单行数据执行操作的. 在sed编辑器读取数据流时,它会基于换行符的位置将数据分成行,一次处理 ...
- shell的数值计算,小数计算
shell脚本中,可以进行数值计算, 如加减乘除,通过expr.let.(())等完成,文章介绍:http://blog.csdn.net/longshenlmj/article/details/14 ...
- shell脚本基础教程
一.什么是shell: shell解释:引用别人的话说:“Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言.” 简而言之, ...
- Linux 小知识翻译 - 「Shell 脚本」
这次说说「Shell 脚本」. 根据上回的介绍,Shell就是「作为联系Linux和用户的接口而存在的软件」.在Linux环境中,通过Shell来操作系统很普遍. 这里,考虑到有时候可能想要「多次的进 ...
- Linux运维之shell脚本
一.bash漏洞 1)bash漏洞 bash漏洞是控制Linux计算机命令提示符的软件中存在的漏洞. bash是一个为GNU计划编写的Unix shell.它的名字是一系列缩写:Bourne-Agai ...
- Linux Shell脚本编程基础(11)
实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核,不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序.Shel编程语言具有普通编程 ...
- Linux入门第五天——shell脚本入门(上)基本概念
一.什么是shell脚本 Shell 脚本(shell script),是一种为 shell 编写的脚本程序. 二.shell入门 1.先导知识 变量知识补充:https://www.cnblogs. ...
- (转)shell脚本之文件测试操作符及整数比较符
shell脚本之文件测试操作符及整数比较符 原文:http://www.cnblogs.com/Steward-Xu/p/6722592.html 一.文件测试操作符: 在书写测试表达式是,可以使用一 ...
随机推荐
- File类_常见的方法(获取,创建与删除,判断,重命名)
获取: 1.1获取文本名称 1.2获取文件路劲 1.3获取文件大小 1.4获取文件修改或创建时间 import java.io.File; import java.text.DateForma ...
- eclipse+tomcat测试连接时候HTTP Status 404错误
想要在eclipse里部署tomcat,结果tomcat单独可以通过连接测试,用eclipse就404了 404肯定都是目录不对,试了半天在eclipse下改了一下配置和文件位置就行了 1.先在菜单栏 ...
- Perfect Pth Powers pku-1730(筛+合数分解)
题意:x可以表示为bp, 求这个p的最大值,比如 25=52, 64=26, 然后输入x 输出 p 就是一个质因子分解.算法.(表示数据上卡了2个小时.) 合数质因子分解模板. ]; ]; ; ;n ...
- 【转】mysql explain执行计划详解
1).id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询. 2).select_type列常见的有: A:simp ...
- 让sublime text3支持Vue语法高亮显示
文章转自 http://www.cnblogs.com/kongxianghai/p/6732429.html 1.准备语法高亮插件vue-syntax-highlight. 下载地址: https: ...
- dubbo报错Data length too large: 10710120处理,及服务提供者协议配置详细说明
工作中遇到以下报错信息 cause: java.io.IOException: Data length too large: 10710120, max payload: 8388608, chann ...
- 1605--luogu(深搜dfs)
据说 这是一道很水的题 emmm 好吧 是我过分水了 ------------------------------------------------------------------------ ...
- CVE-2017-5123 分析报告
系统信息 系统:ubuntu 14.04 64位 内核版本:4.13 (KASLR关闭 但是参考文档一中的哥们已经提到如何绕过:利用对非法地址写的保护) 漏洞背景 CVE-2017-5123是一位葡萄 ...
- 【Codeforces 1137B】Camp Schedule
Codeforces 1137 B 题意:给两个串\(S\).\(T\),问将\(S\)中字符任意调换后出现\(T\)次数最多的方案. 思路:我们首先考虑怎么样放\(T\)才是最优的.我们直观上考虑前 ...
- SkylineGlobe6.5版本,在矿山、石油、天然气等能源行业的最新应用DEMO演示
SkylineGlobe6.5版本,在矿山.石油.天然气等能源行业的最新应用DEMO演示: http://v.youku.com/v_show/id_XNTc3Njc1OTEy.html 一个Pres ...