【Linux Shell脚本编程】数学运算

TangLu 未命名 2015-04-23 3725 0

在Shell中变量的数据类型由于默认是字符串,是不支持进行数学运算的,比如下面例子中将变量a和b相加,最终的运行结果仅仅是将结果作为字符串进行了打印,而并没有进行计算

a=10
b=5
c=$a+$b
echo $c
10+5


如果要在shell中做数学运算的话,可以使用下面的方法:

1、expr命令,用于整数运算,不支持浮点数,算术表达式需要加反引号,算术表达式之间必须要有空格。该命令还支持一些函数,可以计算给定字符串的长度或者进行模式匹配

a=50
b=10
c=`expr $a + $b`
echo $c  #结果为60

#计算长度
name=tanglu
[ `expr length $name` -eq 6 ] #判断name变量长度是否为6

#模式匹配,":"为固定语法格式,后面的".*\.jpg"则为匹配条件
if expr "$1" ":" ".*\.jpg";then  
  echo "文件后缀符合.jpg要求"
fi


2、bc命令(结合scale命令实现浮点运算,scale的值代表小数点的精度)

echo "scale=2;1.2*2.5"|bc


3、let命令,取代并扩展expr的工具,同样不支持浮点数

let number=1+5
echo $number  #输出结果为6

a=10
b=5
let c=$a+$b
echo $c  #输出结果为15


4、$[算术表达式],支持浮点数

a=8
b=2
c=$[$a+$b]
echo $c   #输出结果为10

5、$((算术表达式)),支持浮点数

a=7
b=1
c=$((a+b))
echo $c  #输出结果为8

脚本演示0-100自动求和

#!/bin/bash
sum=0
for ((i=1;i<=100;i++))
do
  sum=`expr $i+$sum`
done
echo $sum




评论