您的位置:首页 > 运维架构 > Shell

[9-13]Shell系列6――取算数运算数值

2015-09-22 13:38 756 查看
本文旨在总结shell编程中取算术运算数值的常用6种方法:let、(())、$[]、expr、bc以及awk
知识储备:
Bash原生是不支持算术运算的,默认会当作字符串来处理,如下例

1
2
3
4
5

#!/bin/bash
a=15+20
echo $a
#运行结果---->
[root@centos~]#15+20
对于一些需要算术运算结果的片段,如何取得算术运算结果大致有以下6种方法,分别简单介绍

用法Let
注意点:
<1>几乎支持所有运算,如++、--、括号优先级等,求幂次方用**
<2>变量引用可以不带$号,如变量num1=num1+1
<3>一般情况下算术表达式可以不加引号,若表达式中有bash关键字需加上
<4>let后面的表达式只支持整数运算
代码实现:
1
2
3
4
5
6
7

#!/bin/bash

read -p "Enter 2 Num: " a b
let "sum=a+b"
let "mi=$a**$b"
echo "sum = $sum"
echo "mi = $mi"




用法(())
注意点: <1>用法、支持的运算基本同let,效果基本等价 <2>变量引用可以不带$,建议带上代码实现:
1
2
3
4
5

#!/bin/bash

read -p "Enter a number: " a
((a++))
echo $a




用法$[]
注意点: <1>使用比较广泛,意思是将中括号内的表达式作为数学运算先计算结果再输出 <2>$[]中变量引用可不带$,但是建议带上 <3>运算支持同let,但是只支持整数运算代码实现:
1
2
3
4
5
6
7
8

#!/bin/bash

if [ $# -eq 0 ];then
echo "Please pass a parameter before EXEC!"
exit 1
else
echo "$1*10 = $[$1*10]"
fi




用法expr
注意点: <1>一款表达式计算工具,能够完成表达式的求值操作,它本身是一个命令,可以直接使用 <2>支持逻辑运算| & ,支持关系运算< <= = != ,支持算术运算+ - * / % <3>乘法必须使用转义 \*,否则会连接字符串
<4>表达式和运算符之间要有空格!正确格式 ARG1 - ARG2 <5>默认只能保留整数位,不支持浮点数运算代码实现:
1
2
3
4

#!/bin/bash

read -p "Enter 2 Num: " a b
echo `expr $a \* $b`




用法bc
注意点: <1>bc其实也是一个命令,是一个计算器程序,有些Linux未必自带 <2>bc可以实现几乎所有运算,但是需要进入bc交互接口,所以在shell中使用管道来处理 <3>支持浮点数运算,但是需要通过sacle指定精度代码实现:
1
2
3
4
5

#!/bin/bash

var=3.14
var=`echo "scale=2;$var*3"|bc`
echo $var




用法awk
注意点: <1>awk本质是一款文本处理、格式化报表输出工具,同时也可以作为一门编程语言 <2>虽然bash原生不支持运算,但是awk支持众多运算,还能进行浮点运算代码实现:
1
2
3
4
5

#!/bin/bash

var=2.71
var=`echo "$var 2"|awk '{printf("%g",sin($1/$2))}'`
echo $var




本文出自 “蓝色仓库” 博客,请务必保留此出处http://bluebox.blog.51cto.com/8852456/1697060
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: