Linux之shell script编写(二)数值计算

原因:各种方式的计算太凌乱,所以作如下的总结(经过测试)!

一、数值的计算方式

(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}'--->比较特殊(了解即可)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值