shell脚本中的数值运算
2013-12-17 15:48
211 查看
shell中的变量没有如c语言中字符型、整型、浮点型的区分,默认将变量赋值当做字符,怎样才能让shell将变量赋值当做数值型呢,答案是用$ 和[], []包含的数学算式可以被shell正确识别。
例1:
[root@localhost ~]# cat test.sh
#!/bin/bash
var1=100
var2=200
var3=$[$var1+$var2]
echo $var3
[root@localhost ~]# sh test.sh
300
这样是不是实现我们想要的结果了呢,其实shell中还提供了一个数学运算的命令 expr(evaluate expression),他可以进行加减乘除还有比较运算,不过很可惜的是不支持浮点型运算。还有一个缺陷就是expr命令中的运算符可能会有其他含义如*,必须要使用反斜杠进行转义,这让人很不爽。不过不用担心,有问题就会有聪明的人来解决的,一个功能强大的计算器可以供我们在shell中使用,这就是bc。可以查看man手册来了解关于它的详细用法。这里仅介绍一下bc在shell中的调用。bc是一个外部命令,要在shell使用的话我们要使用反引号以把结果赋给变量。
例2:
[root@localhost ~]# cat test2.sh
#!/bin/bash
var1=`echo "scale=4;10/3"|bc`
echo $var1
[root@localhost ~]# sh test2.sh
3.3333
看一下它是如何工作的,首先我们要把数学表达式传递给bc,很简单我们通过管道完成。你也看到了表达式里面不只有表达式还有个scale,它使用来设置小数位数,不过为什么跟运算结果不符呢,如上所示,应该有四位小数,(有待解决)。转向正题,有了bc以后,变得方便了很多。可是还是有些不太令人满意的地方,对于每一个运算表达式都要通过管道传参的方式似乎有些繁琐,我们可以使用内置重定向的方法,内置重定向允许从命令行直接重定向数据,在shell脚本中,使用如下方式
varible=`bc <<EOF
options
statements
expressions
EOF
`
EOF用来表明数据的开始和结束,需要注意的是同样需要使用反引号将结果赋给变量。expressions中可以使用bc内部变量和shell中的变量,bc内部变量只在bc内部有效。不能用于shell脚本中。运算表达式中引用shell变量需加$引用符,bc内部变量不加$.
bc的功能远不止以上所述,详细用法请参考man手册。
例1:
[root@localhost ~]# cat test.sh
#!/bin/bash
var1=100
var2=200
var3=$[$var1+$var2]
echo $var3
[root@localhost ~]# sh test.sh
300
这样是不是实现我们想要的结果了呢,其实shell中还提供了一个数学运算的命令 expr(evaluate expression),他可以进行加减乘除还有比较运算,不过很可惜的是不支持浮点型运算。还有一个缺陷就是expr命令中的运算符可能会有其他含义如*,必须要使用反斜杠进行转义,这让人很不爽。不过不用担心,有问题就会有聪明的人来解决的,一个功能强大的计算器可以供我们在shell中使用,这就是bc。可以查看man手册来了解关于它的详细用法。这里仅介绍一下bc在shell中的调用。bc是一个外部命令,要在shell使用的话我们要使用反引号以把结果赋给变量。
例2:
[root@localhost ~]# cat test2.sh
#!/bin/bash
var1=`echo "scale=4;10/3"|bc`
echo $var1
[root@localhost ~]# sh test2.sh
3.3333
看一下它是如何工作的,首先我们要把数学表达式传递给bc,很简单我们通过管道完成。你也看到了表达式里面不只有表达式还有个scale,它使用来设置小数位数,不过为什么跟运算结果不符呢,如上所示,应该有四位小数,(有待解决)。转向正题,有了bc以后,变得方便了很多。可是还是有些不太令人满意的地方,对于每一个运算表达式都要通过管道传参的方式似乎有些繁琐,我们可以使用内置重定向的方法,内置重定向允许从命令行直接重定向数据,在shell脚本中,使用如下方式
varible=`bc <<EOF
options
statements
expressions
EOF
`
EOF用来表明数据的开始和结束,需要注意的是同样需要使用反引号将结果赋给变量。expressions中可以使用bc内部变量和shell中的变量,bc内部变量只在bc内部有效。不能用于shell脚本中。运算表达式中引用shell变量需加$引用符,bc内部变量不加$.
bc的功能远不止以上所述,详细用法请参考man手册。
相关文章推荐
- shell脚本中的数值运算
- 连载shell(一): 交互式脚本,随日期变化,数值运算
- 数值运算shell脚本
- 数值运算shell脚本
- shell数值操作(四则运算,浮点数,科学计数法)---awk,bc
- Linux Shell 脚本应用——数值运算及处理
- #7 shell脚本编程之bash运算和条件测试命令
- shell脚本中的算术运算
- shell脚本中的算术运算
- Shell脚本学习笔记(三)--算术运算
- 17_Shell语言―――如何在shell 脚本中进行算术运算
- Linux学习笔记:bash算术运算及shell脚本
- shell脚本之算术运算和逻辑运算
- Shell---常用命令、常用环境变量、PS1、语系变量、位置变量、预定义变量、数值运算
- Shell脚本学习笔记(三)--算术运算
- shell脚本--数值比较
- Shell 脚本中的算术运算与常用条件表达式
- Shell脚本(二)数学运算
- Shell 学习(三、vi变量和数值运算,父shell和子shell)
- Shell脚本[运算表达式,条件控制语句]