变量的数值计算

变量的数值计算

变量数值计算常用的命令有如下几个:

(())  let  expr  bc  $[]

1、 (()) 用法 (此用法比较常用)
用法一:
[root@zhangjie scripts]# ((a=1+2))
[root@zhangjie scripts]# echo $a
3

用法二:
[root@zhangjie scripts]# b=$((4+7))
[root@zhangjie scripts]# echo $b
11

用法三:

[root@zhangjie scripts]# echo $((2+3*8))
26

用法四:
[root@zhangjie scripts]# echo $a
2
[root@zhangjie scripts]# echo $((a+=1))  ### 相当于a=a+1
3

用法五:
[root@zhangjie scripts]# echo $a
2
[root@zhangjie scripts]# echo $((a++))
2
[root@zhangjie scripts]# echo $a
3

说明:a++ 表示先输出a 本身的变量结果 ,然后自身再递增,就由原来的2递增到3了

[root@zhangjie scripts]# echo $a
15
[root@zhangjie scripts]# echo $((++a))
16
[root@zhangjie scripts]# echo $((++a))
17
[root@zhangjie scripts]# echo $((++a))
18
[root@zhangjie scripts]# echo $a
18

说明:先将a本身的变量结果递增,然后再a本身就变成递增后的结果了

用法六:
[root@zhangjie scripts]# echo $a
3
[root@zhangjie scripts]# echo $((a--))
3
[root@zhangjie scripts]# echo $a
2

说明:a-- 表示先输出a 本身的变量结果 ,然后自身再递减,就由原来的3递减到2了

总结: a++  a-- ++a   --a 
运算符+或-在前面就是先递增或递减,然后再输出递增或递减后的变量值
运算符+或-在后面就是先输出a自身的值然后再递增或递减
用法七:
[root@zhangjie scripts]# echo $((3>2))
1
[root@zhangjie scripts]# echo $((3<2))
0
[root@zhangjie scripts]# 

注:1表示真,0表示假

用法八:
[root@zhangjie scripts]# echo $((100*(1+100)/2))
5050
[root@zhangjie scripts]#

注:如上为计算1加到100的总和等于5050


运行脚本计算的例子

[root@zhangjie scripts]# cat test.sh 
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))"
[root@zhangjie scripts]# sh test.sh 6 2
a+b=8 表示6加2等于8
a-b=4 表示6减去2等于4
a*b=12 表示 6乘以2等于12
a/b=3  表示6除以2等于3
a%b=0  表示6除以2的余数是多少
a**b=36   表示6的2次方
[root@zhangjie scripts]#

自制计算器
[root@zhangjie scripts]# cat test1.sh          
a=$1
b=$2
c=$3
echo "$a$b$c=$(($a$b$c))"
[root@zhangjie scripts]# sh test1.sh 6 + 2  
6+2=8
[root@zhangjie scripts]# sh test1.sh 6 - 2
6-2=4
[root@zhangjie scripts]# sh test1.sh 6 "*" 2
6*2=12
[root@zhangjie scripts]# sh test1.sh 6 "/" 2 
6/2=3
[root@zhangjie scripts]# sh test1.sh 6 "%" 2   
6%2=0
[root@zhangjie scripts]# sh test1.sh 6 "**" 2 
6**2=36

2、let 的用法
[root@zhangjie scripts]# i=2
[root@zhangjie scripts]# echo $i
2
[root@zhangjie scripts]# let i=i+8
[root@zhangjie scripts]# echo $i  
10

[root@zhangjie scripts]# i=2
[root@zhangjie scripts]# echo $((i=i+8))
10
[root@zhangjie scripts]# echo $i
10

注:let i=i+8 等同于$ ((i=i+8))  但是效率上使用(())要快一些4

3、expr 命令用法 (只能用于比较简单的计算)
[root@zhangjie scripts]# expr 6 + 2
8
[root@zhangjie scripts]# expr 6 - 2
4
[root@zhangjie scripts]# expr 6 \* 2
12
[root@zhangjie scripts]# expr 6 \/ 2
3
[root@zhangjie scripts]# expr 6 \% 2
0

[root@zhangjie scripts]# i=2
[root@zhangjie scripts]# echo $i
2
[root@zhangjie scripts]# i=`expr $i + 1`
[root@zhangjie scripts]# echo $i
3

加[] 的方式
[root@zhangjie scripts]# expr $[2 + 3]
5

3、bc 命令的用法

[root@zhangjie scripts]# echo 6+2 |bc 
8
[root@zhangjie scripts]# echo 6-2 |bc 
4
[root@zhangjie scripts]# echo 6*2 |bc 
12
[root@zhangjie scripts]# echo 6/2 |bc 
3
[root@zhangjie scripts]# echo 6%2 |bc 
0

[root@zhangjie scripts]# echo 3.2+1.2 |bc
4.4
[root@zhangjie scripts]# echo 3.2-1.1 |bc 
2.1
[root@zhangjie scripts]# echo 3.2*2 |bc   
6.4
[root@zhangjie scripts]# echo 3.2/2 |bc 
1

4、$[] 运算例子
[root@zhangjie scripts]# echo $[6+2]
8
[root@zhangjie scripts]# echo $[6-2]
4
[root@zhangjie scripts]# echo $[6*2]
12
[root@zhangjie scripts]# echo $[6/2]
3
[root@zhangjie scripts]# echo $[6%2]
0
[root@zhangjie scripts]# echo $[6**2]
36

5、read 语法
read[参数][变量名]
常用参数
-p 设置提示信息
-t timeout

[root@zhangjie scripts]# read -p "please input two number: " a1 a2
please input two number: 1 2
[root@zhangjie scripts]# echo $a1 $a2
1 2
5秒钟超时时间设置
1 2
[root@zhangjie scripts]# read -t 5 -p "please input two number: " a1 a2 
please input two number: [root@zhangjie scripts]# 

以read方式读入的方式案例
[root@zhangjie scripts]# cat test.sh 
read -t 5 -p "please input two numbers: " 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))"
echo "a**b=$(($a**$b))"
[root@zhangjie scripts]# sh test.sh
please input two numbers: 1 2
a+b=3
a-b=-1
a*b=2
a/b=0
a%b=1
a**b=1






 

你可能感兴趣的:(变量的数值计算)