码迷,mamicode.com
首页 > 系统相关 > 详细

shell-变量的数值计算

时间:2017-01-07 21:31:22      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:shell 计算 算法

变量的数值计算觉的有如下命令

(())、let、expr、bc、$[]

下面看看数值计算的运算符

技术分享

(())此法很常用且效率高,用于执行整数型的计算,不支持浮点型。

如图

[root@localhost ~]# ((a=1+2**3-4%3))

[root@localhost ~]# echo $a

8

[root@localhost ~]# b=$((1+2**3-4%3))

[root@localhost ~]# echo $b

8

[root@localhost ~]# 

其中2**3是2的3次方

[root@localhost ~]# echo $((a++))

8

[root@localhost ~]# echo $a

9

[root@localhost ~]# echo $((a--))

9

[root@localhost ~]# echo $a

8

[root@localhost ~]# echo $((++a))

9

[root@localhost ~]# echo $a

9

[root@localhost ~]# echo $((--a))

8

[root@localhost ~]# echo $a

8

[root@localhost ~]# 

由上面可以看到,$((a++))是先输出a原来的值再去加,然后我们echo $a的时候,实际上就是输出变量a运算后的值啦。

记忆方法:变量在前,先输出变量值,变量在后,就是先去处后输出变量的值

上面都是整数的,如果有小数的话就会报错了,如果想用小数的话可以用bc命令

[root@localhost ~]# cat test.sh

#!/bin/bash

a=6

b=2

echo "a-b=$(( $a-$b ))"

echo "a-b=$(( $a+$b ))"

echo "a-b=$(( $a*$b ))"

echo "a-b=$(( $a/$b ))"

echo "a-b=$(( $a**$b ))"

echo "a-b=$(( $a%$b ))"

[root@localhost ~]# sh test.sh 

a-b=4

a-b=8

a-b=12

a-b=3

a-b=36

a-b=0

如果你想通过命令行传参的方式实现上面的运算的话可以修改脚本为以下的

#!/bin/bash

a=$1

b=$2 

echo "a-b=$(( $a-$b ))"

echo "a-b=$(( $a+$b ))"

echo "a-b=$(( $a*$b ))"

echo "a-b=$(( $a/$b ))"

echo "a-b=$(( $a**$b ))"

echo "a-b=$(( $a%$b ))"

如图:执行命令

"test.sh" 9L, 167C 已写入

[root@localhost ~]# sh test.sh 8 2

a-b=6

a-b=10

a-b=16

a-b=4

a-b=64

a-b=0

[root@localhost ~]# sh test.sh 8 3

a-b=5

a-b=11

a-b=24

a-b=2

a-b=512

a-b=2

下面我们做一个小的计算器

[root@localhost shell]# cat compute.sh 

#!/bin/bash

echo $(($1$2$3))

[root@localhost shell]# sh compute.sh 1+2

3

[root@localhost shell]# 

当然这个是比较简单的,很多的bug我们可以看看其他人写的

http://chenhao6.blog.51cto.com/6228054/1232070

其中的一些代码就写的不错,如下

#!/bin/bash
echo " ----------------------------------"
echo "|这是一个简单的整数计算器,作者YUAN|"
echo " ----------------------------------"
echo
while :
do
read -p  "请输入一个整数: " nu
expr $nu + 0 &> /dev/null
if [ $? -eq 0 ]
 then
       echo "第一个数是$nu"
       break

else
       echo "您输入的$nu不是整数请重新输入"
fi
done

while :
do
read -p  "请输入二个整数: " nu2
expr $nu2 + 0 &> /dev/null
if [ $? -eq 0 ]
 then
       echo "第二个数是$nu2"
       break
else
       echo "您输入的$nu2不是整数请重新输入"
fi
done
echo  "------------------"
echo "|  1.加法          |"
echo "|  2.减法          |"
echo "|  3.乘法         |"
echo "|  4.除法         |"
echo  "------------------"
read -p "请输入您想执行的算法:" me
case $me in
       "1")
sum=`expr $nu + $nu2`
echo "$nu+$nu2=$sum"
;;
       "2")
jian=`expr $nu - $nu2`
echo "$nu-$nu2=$jian"
;;
       "3")
chen=`expr $nu \* $nu2`
echo "$nu*$nu2=$chen"
;;
       "4")
chu=`expr $nu / $nu2`
echo "$nu/$nu2=$chu"
esac


本文出自 “爱周瑜” 博客,请务必保留此出处http://izhouyu.blog.51cto.com/10318932/1889980

shell-变量的数值计算

标签:shell 计算 算法

原文地址:http://izhouyu.blog.51cto.com/10318932/1889980

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!