shell 数值计算

shell中的赋值和操作默认都是字符串处理,在此记下shell中进行数学运算的几个特殊方法,以后用到的时候可以来看,呵呵。
   1、错误方法举例
   a)
   var=1+1
   echo $var
   输出的结果是1+1,悲剧,呵呵
   
   b)
   var=1
   var=$var+1
   echo $var
   输出结果是1+1,依然悲剧,呵呵
   
   2、正确方法
   1)使用let
   var=1
   let "var+=1"
   echo $var
   输出结果为2,这次没有悲剧
   注意:
   a)经我测试let几乎支持所有的运算符,在网上看到一篇文章说“let不支持++、--和逗号、(、)”,但经我测试自加、自减、以及括号的优先级都得到了很好的支持
   b)方幂运算应使用“**”
   c)参数在表达式中直接访问,不必加$
   d)一般情况下算数表达式可以不加双引号,但是若表达式中有bash中的关键字则需加上
   e)let后的表达式只能进行整数运算

2)使用(())
   var=1
   ((var+=1))
   echo $var
   输出结果为2
   注意:
   (())的使用方法与let完全相同
   
   3)使用$[]
   var=1
   var=$[$var+1]
   echo $var
   输出结果位2
   注意:
   a)$[]将中括号内的表达式作为数学运算先计算结果再输出
   b)对$[]中的变量进行访问时前面需要加$
   c)$[]支持的运算符与let相同,但也只支持整数运算
   
   4)使用expr
   var=1
   var=`expr $var + 1`
   echo $var
   输出结果为2
   注意:
   a)expr后的表达式个符号间需用空格隔开
   b)expr支持的操作符有: |、&、<、<=、=、!=、>=、>、+、-、*、/、%
   c)expr支持的操作符中所在使用时需用\进行转义的有:|、&、<、<=、>=、>、*
   e)expr同样只支持整数运算
   
   5)使用bc(可以进行浮点数计算)
   var=1
   var=`echo "$var+1"|bc`
   echo $var
   输出结果为2
   介绍:
   bc是linux下的一个简单计算器,支持浮点数计算,在命令行下输入bc即进入计算器程序,而我们想在程序中直接进行浮点数计算时,利用一个简单的管道即可解决问题。
   注意:
   1)经我测试bc支持除位操作运算符之外的所有运算符。
   2)bc中要使用scale进行精度设置
   3)浮点数计算实例
   var=3.14
   var=`echo "scale=2;$var*3"|bc`
   echo $var
   输出结果为9.42
   
   6)使用awk(可已进行浮点数计算)
   var=1
   var=`echo "$var 1"|awk ‘{printf("%g",$1*$2)}‘`
   echo $var
   输出结果为2
   介绍:
   awk是一种文本处理工具,同时也是一种程序设计语言,作为一种程序设计语言,awk支持多种运算,而我们可以利用awk来进行浮点数计算,和上面bc一样,通过一个简单的管道,我们便可在程序中直接调用awk进行浮点数计算。
   注意:
   1)awk支持除微操作运算符之外的所有运算符
   2)awk内置有log、sqr、cos、sin等等函数
   3)浮点数计算实例
   var=3.14
   var=`echo "$var 2"|awk ‘{printf("%g",sin($1/$2))}‘`
   echo $var
   输出结果为1

时间: 2024-11-04 23:34:43

shell 数值计算的相关文章

shell数值计算

在shell中,尤其是shell循环中,可能用到一些表达式的运算 使用expr命令可以完成这个要求,如: x=$(expr $a + 1) 完成了计算$a与1相加的运算并将值赋给了x 类似算符还有 $a | $b    如果$a非零则运算结果取$a值,否则取$b值 $a & $b    只要有一个表达式为0,则运算结果为0,否则等于$a 此外还有+ ,- ,* ,/ ,% ,= ,<= ,>= ,!=等运算 注意,$a+$b这样的写法是非法的,必须严格的加空格在算符两侧:$a + $b

shell的数值计算,小数计算

shell脚本中,可以进行数值计算, 如加减乘除,通过expr.let.(())等完成,文章介绍:http://blog.csdn.net/longshenlmj/article/details/14166193 但是上面的运算只支持整数. 小数计算怎么办? shell中小数计算 通过bc,awk和nawk工具等完成 使用bc的代码如: click=`awk -F"\t" '$1==2 {print $2}' ctr_result.txt` show=`awk -F"\t&q

《跟老男孩学Linux运维之shell编程实战》-第四章 变量的数值计算

本文讲解shell编程中变量的数值计算. 1.常见的算术运算符: 提示: 此处对于我自己来说++.--比较难理解,之前一看到脚本中有这些符号,就看不懂了,所以在此举例说明一下: [[email protected] ~]# a=10                  ==>定义变量a[[email protected] ~]# echo $((a++)) ==>如果a在运算符++或--的前面,那么输出整个表达式时,会输出a的值, 此前定义的变量a为10,所以此处的值为10.10[[email 

Linux shell脚本数值计算个人心得

Linux shell脚本数值计算个人心得 本篇博客为,个人对与bash数值计算的一些心得与用法. Bash对于数值是没有明确定义的,在shell里面所有的数值都默认为字符串,并不是单纯的数值. 比如:a=1+2,a并不等于3,而是等于字符串1+2. 整数计算: 整数计算为整数型的数值加减乘除,没有浮点数的数值,就算浮点数的数值进行加减也会忽略小数点后面的数值. 表达式计算方法: 表达式1:$[EXPRESSION] 表达式2:$((EXPRESSION)) [ ] 和 (( )) 也被称为运算

shell脚本--数值计算

原生bash不支持简单的数学运算 初学的时候,可以使用$(())和expr来实现 使用$(())来实现: #!/bin/bash #文件名:test.sh echo $((1+3)) #命令行第2个参数和第3个参数求和 #此时+号两边可以不用加空格 echo $(($1+$2)) echo $(($1 + $2)) echo $(($1-$2)) echo $(($1*$2)) #此时不用对*转义 echo $(($1/$2)) echo $(($1%$2)) 执行脚本: [email prot

在shell中做数值计算

shell自带的计算符号只能计算整数例如:echo $[1+1]echo $((1+2))还有let命令,expr命令但是都并不好用,只能进行整数的运算,如果要计算小数,可以使用bc命令工具另外其实除了bc,还可以使用awk来进行数值计算,功能更加强大,而且方便,因为awk本身就是一门编程语言,主要用于对文本的处理,对数据的处理自然不在话下!要想使用awk计算,建议使用BEGIN模式,熟悉awk的人知道awk的命令行语法是这样的:awk [选项] 'BEGIN{执行语句...}{执行语句...}

shell基础--变量的数值计算

变量的数值计算 1.$((表达式)) (1).实验1 [[email protected]~_~ day4]# cat test.sh #!/bin/bash a=6 b=2 echo "a-b=$(($a-$b))" echo "a+b=$(($a+$b))" echo "a*b=$(($a*$b))" echo "a/b=$(($a/$b))" echo "a%b=$(($a%$b))" echo &q

Shell中的数值计算

#!/bin/bash echo "please input number:" read n a=`expr $n / 100` #a1=`expr $n - $a * 100` b=`echo "($n-$a*100)/10" | bc` c=`echo "($n-$a*100-$b*10)" | bc` d=`echo "$c*100+$b*10+$a" | bc` echo $d 转:http://bbs.techrep

shell脚本变量数值计算

1.算数运算符 执行算数运算就离不开各种运算符号,和其他编程语言一样,shell脚本也有运算符号.常见运算符号如下图所示: 上图中的运算符号常用于常见的运算命令,常用运算命令如下图所示: 2.双小括号"(())"运算命令 2.1 双小括号数值运算的基础语法 双小括号"(())"的作用是进行数值运算与数值比较,它的效率很高. 2.2 双小括号数值运算案例 案例1:利用"(())"进行简单的运算 [[email protected] ~]# echo