原因:各种方式的计算太凌乱,所以作如下的总结(经过测试)!
一、数值的计算方式
(1)declare
1)整数
declare -i num=100+200
说明:定义变量的类型并初始化!
语法:declare -i 变量--->内置命令(type -f)!
2)数组-->整数
declare -a array=(1 2 3 4 5)
说明:一次性定义数组变量和初始化
----------------------------
declare -a arrays
arrays[0]=1
说明:先声明后定义!
提示:declare默认定义的是字符串!
数组的补充:
read -a arrays
1 2 3 4 5 --->输入的内容(IFS-->空格)
echo $arrays
一、$( )的弊端是,并不是所有的类unix系统都支持这种方式,但反引号是肯定支持的。
二、一般情况下,$var与${var}是没有区别的,但是用${ }会比较精确的界定变量名称的范围
(2)(( expression表达式 ))--->算术扩展(正数)!
案例
((a=1+2**3-4%3))
a=3
echo $a
echo $((a+=1))---->注意:变量不加"$"!!!
echo $((a++))
((sum=one*two))-->one和two已经声明
扩展:(( ... ))结构可以用来计算并测试算术表达式的结果!
$((...))结构的表达式是C风格的表达式,其返回的结果是表达式值(整体)!
应用:(())在for和while的应用
for((...;...;...))
do
cmd
done
while ((...))
do
cmd
done
特殊:a、b已知--->c=$(($a+$b))
在$(( ))中的变量名称,可于其前面加 $ 符号来替换,也可以不用。
说明0:可以在命令行中直接执行!
说明1:在 $(( )) 中的变量名称可以加(不加) $ 符号,最好不要加$!
说明2:数字(变量)和符号有没有空格都行,为了方便可以不加括号!
说明3:所有表达式可以像c语言一样,进行逻辑运算,四则运算、特殊运算符号的应用{++a,a++,+=}!
说明4:一个null或未设置的变量被当做0来处理!
(3) $[]
说明:bash shell为了保持跟Bourne shell兼容而包含了expr命令,但它同样也提供了一个执行数学表达式更简单的方法。在bash shell中,在将一个数学运算结果赋给某个变量时,你可以用美元符和方括号($[ operation ])将数学表达式圈起来:
sum=$[${sum1}+${sum2}]--->两边不需要空格!-->${sum1}就是表示一个数值
特殊:幂运算-->sum=$[2**6]--->64
说明:[]中的变量使用必须加$!
链接:取路径、文件名、后缀
(4)expr(了解)
expr 2 + 3--->注意expr是命令
sum=$(expr 2 + 3)--->表达式和运算符之间必须有空格!
i=5--->expr $i + 6--->变量的使用必须加$
注意1:*号需要进行转义"\"否则会出错!
注意2:expr后面的变量(纯数字)与命令expr之间及变量与运算符之间必须使用空格隔开,
注意3:在使用expr时,要特别"表达式"中是否包含shell的特殊字符,如*、|、<、>、!、&、(、),要使用"\"来转义。
特点:外部程序(跨平台--移植性好)和shell没有关系!
(5)let(了解)
let r=1+2 --->用于整数运算,与(())类似
(6)bc(重点掌握)
特点:你可以使用反引号或者$()来运行bc命令并将输出赋给一个变量
格式:variable = $(echo "options; expression" | bc)
案例:sum=$(echo "scale=2;100/3" | bc)-->小数运算!
补充:echo "4*a(1)"|bc -l -->t的计算,先加载函数库!
高级:能识别输入重定向,允许你将一个文件重定向到bc命令来处理!
思路:你可以将表达式存储到文件中。最好的办法是使用内联输入重定向,允许你直接在控制台重定向数据。在shell脚本中,你可以将输出赋给一个变量和采用的EOF文件字符串标识了内联重定向数据的开始和结尾。记住仍然需要反引号来将bc命令的输出赋给变量。
#!/bin/bash
var1=10.46
var2=43.67
var3=33.2
var4=71
var5=`bc << EOF #类似(细细体会)!
scale = 4
a1 = ($var1 * $var2) #含义!
b1 = ($var3 * $var4)
a1 + b1
EOF
`
echo The final answer for this mass is $var5
###bc的基本用法(简要提示)
bash计算器其实是允许你在命令行输入浮点表达式、解释表达式、计算并返回结果的一种编程语言。bash计算器能够识别:
- 数字(整数和浮点数)
- 变量(简单变量和数组)
- 注释(以#开始的行或者C语言中的/* */对)
- 表达式
- 编程语句(例如if-then)
- 函数
你可以在shell提示符下通过bc命令访问bash计算器:
(7)awk:awk既可以整数运算,也可以小数运算
awk 'BEGIN{a=3+2;print a}'--->比较特殊(了解即可)