[转]shell基本算术运算
from:http://www.cnblogs.com/yfanqiu/archive/2012/05/10/2494031.html#undefined
shell程序中的操作默认都是字符串操作,在要运行数学运算符的时候可能得到意想不到的答案:
var=1
var=$var+1
echo $var output:
1+1
从这个例子中可以看出shell字符串连接的操作,需要注意的是空格。
在shell中可以使用let来指示下面是算术表达式,let表达式内变量不用加$
var=1
let "var+=1" 或 let var+=1 这种写法运算符间不能有空格
echo $var output:
2
这其中的let可以用(())代替,let ″j=i*6+2″等价于((j=i*6+2)), 就像很多的循环中用法一样
注意:let必须是完整的算术表达式,即有等号两边
(())、expr 可以只有等号右边的计算,由$((...))、$(expr ...)、`expr ...` 查看返回结果
var=1
((var++)) 查看结果: echo $(())
echo $var output:
2
还有一种写法:
var=1
var=$[$var+1]
echo $var output:
2
使用expr,需要注意的是其中的那个符号并不是单引号,而是“1”左边的那个键
注意:将需要运算的表达式写入在expr 后面,保证参数与运算符号中间有空格隔开。
var=1
var=`expr $var + 1`
echo $var output:
2
1:在shell 中$() 与 ``等效。执行中间包含的命令语句,返回执行结果。
2:从效率来说let==(()) > expr > bc。let和(())运行是内建命令,使用相同的算法。
3:let 和 expr 的运算是整数运算,不包括浮点预算。
4:expr和bc是外部程序,expr的体积几乎等于bc的1/3,执行一次装入内存所消耗的时间就不一样。
5:从运算能力来说,bc排第一位。
上面的这几种做法都是只能处理整数运算,下面的这种做法是可以处理浮点数的:
var=1
var=`echo "scale=1;$var*2.0"|bc` bc预设输出整数,用scale 指定小数点下位数
echo $var output:
2.0
上面的`符号跟上面的一样,是1左边的那个键,而bc是linux上面的一个计算器,支持除位运算以外的所有运行。
另外一个支持浮点运算的方法是awk:
var=1
var=`echo "$var 1"|awk '{printf("%g",$1+$2)}'`
echo $var output:
2
$ c=$(awk 'BEGIN{print 7.01*5-4.01 }')
$ echo $c
[转]shell基本算术运算的更多相关文章
- Linux之Shell的算术运算
在Bash的算术运算中有以下几种方法:名称 语法 范例算术扩展 $((算术式)) r ...
- Bash shell 的算术运算有四种方式
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1:使用 expr 外部程式加法 r=`expr 4 + 5`echo $r注意! '4' '+' '5' 这三者之间要有空白r=`e ...
- shell笔记-算术运算
算术运算在Bash shell环境中,可以利用let.(( ))和[]执行基本的算术操作.而在进行高级操作时,expr和bc这两个工具也会非常有用.let命令可以直接执行基本的算术操作.当使用let时 ...
- Linux shell脚本算术运算和逻辑运算
算术运算 默认不支持算数运算.所以需要特定的语法来完成, shell进行算数运算的工具: let declare (())或$(())或$[] bc let: 格式: let var=算术表达式 例如 ...
- [shell基础]——算术运算
shell只支持整数运算.一般可用let.expr.declare.$[]实现. 更精准的运算建议使用Linux下的bc工具——一款高精度计算语言. 1. let是shell内建的整数运算命令 ## ...
- shell的算术运算
变量的数值计算方法大致有双括号 (()), expr, bc, $[ ] 例子1 注意:2**3表示2的3次方,a++表示先输出a自身的值,然后进行++的运算: --a表示先进行--的运算,然后再输 ...
- shell脚本算术运算
自增自减操作 用let命令可以实现自增自减的命令,不需要$符号: #!/bin/bash set -e n=100 let n++ echo $n 还可以实现自增自减指定的值: #!/bin/bash ...
- shell算术运算与进制运算
(())与let是等效的 arithmetic expression type 与[是等效的 source与.是等效的 其实,Shell(这里是Bash)本身不具备处理浮点计算的能力,但是可以使用“b ...
- LinuxShell算术运算
Bash shell 的算术运算有四种方式:1:使用 expr 外部程式 加法 r=`expr 4 + 5`echo $r注意! '4' '+' '5' 这三者之间要有空白r=`expr 4 * 5` ...
随机推荐
- mysql使用笔记(三)
一.数值类型 1. 数值类型 标准sql中包含数据类型 INTEGER, SMALLINT, DECIMAL, NUMERIC,以及FLOAT, REAL, DOUBLE.mysql在此基础上 ...
- 按钮靠右css小结
按钮靠右 style="float:right" ,多按钮排版会相反 按钮内的字体靠右 style="text-align:right" 按钮离右边框距离 s ...
- 七大查找算法(附C语言代码实现)
来自:Poll的笔记 - 博客园 链接:http://www.cnblogs.com/maybe2030/p/4715035.html 阅读目录 1.顺序查找 2.二分查找 3.插值查找 4.斐波那契 ...
- GreenPlum简单性能测试与分析
版权声明:本文由黄辉原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/195 来源:腾云阁 https://www.qclou ...
- .ecp认证文件(10.3版本)
arcgisserver,103,ecp.arcgis.engine,01-jan-2030,E9PJJE2G05FB8RZDF121 3dengine,103,ecp.arcgis.engine,0 ...
- 用excel处理重复数据
我们在处理数据时,重复数据常常会对分析造成很大麻烦,因此数据整理初期一个重要的工作是排重,excel2007以上版本中有一个删除重复项功常便捷,但是每次点来点去也很麻烦,下面我们用公式来对一些重复数据 ...
- 为什么要使用SLF4J而不是Log4J
每一个Java程序员都知道日志对于任何一个Java应用程序,尤其是服务端程序是至关重要的,而很多程序员也已经熟悉各种不同的日志库如java.util.logging.Apache log4j.lo ...
- Combination Sum [LeetCode]
Problem Description: http://oj.leetcode.com/problems/combination-sum/ Basic idea: It seems complicat ...
- windows下修改mysql用户名和密码
1.关闭正在运行的MySQL. 2.打开DOS窗口,转到mysql\bin目录. 3.输入mysqld-nt --skip-grant-tables回车.如果没有出现提示信息,那就对了. 4.再开一个 ...
- 《Play for Java》学习笔记(二)基本的CRUD应用
注解: CRUD——Create,Retrieve, Update, Delete 文件结构