变量的数值计算
- 算术运算符:如果要执行算术运算,就会离不开各种运算符号,和其他编程语言类似,shell 也有很多算术运算符
![](https://i-blog.csdnimg.cn/blog_migrate/3980142a273b5ea5c6120e75a800153c.png)
- 算术运算命令:
- 双小括号"(())"数值运算命令:双小括号的作用时进行数值运算与数值比较,它的效率很高,用法灵活,是企业场景运维人员经常采用的运算操作符。
- 利用(())进行简单的数值计算
[root@wrh-50 ~]# echo $((1+1)) #计算1+1
2
[root@wrh-50 ~]# echo $((6-3)) #计算6-3
3
[root@wrh-50 ~]# ((i=5)) #获取i的值,此时没有输出
[root@wrh-50 ~]# ((i=i*2)) #计算i*2的值,并且赋给i,此时也没有输出但是已经存到i
[root@wrh-50 ~]# echo $i #输出时使用echo并且要加上$
10 #因为一开始i=5,经过前一指令计算后得到5*2=10
[root@wrh-50 ~]# ((a=1+2**3-4%3)) #计算1+(2的3次方)-(4对3取余)并赋值给变量a
[root@wrh-50 ~]# echo $a #输出结果 (先乘除后加减)
8
[root@wrh-50 ~]# b=$((1+2**3-4%3)) #将变量b放在括号外面
[root@wrh-50 ~]# echo $b
8
[root@wrh-50 ~]# echo $((1+2**3-4%3)) #直接输出算式结果
8
#!/bin/bash
#在脚本中定义a和b两个变量分别赋值
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))"
![](https://i-blog.csdnimg.cn/blog_migrate/e94fd7eedc8b70d34ea4b6154cc07bc1.png)
#!/bin/bash
#实现输入 2 个数进行加,减,乘,除功能的计算器
#使用了 read 命令的读入功能,并对读入的内容是否为整数,传入的符号是否符合加,减,乘,除之一做了判断
#add,subtract,multiply and divide
print_usage() { #定义一个函数,名字为print_usage
print "please enter an integer\n"
exit 1
}
read -p "please input first number:" firstnum #读入第一个数字
if [ -n "`echo $firstnum | sed 's/[0-9]//g'`" ];then
#判断是否为整数,删除读入内容的数字部分看是否为空,进而判断读入的内容是否为数字
print_usage
fi
read -p "please input the operators:" operators
if [ "${operators}" != "+" ]&&[ "${operators}" != "-" ]&&[ "${operators}" != "*" ]&&[ "${operators}" != "/" ];then
#判断第二个输入内容操作符是否为四则运算符之一
echo "please use {+|-|*|/}" #如果操作符不符合要求,则给出提示
exit 2 #因为不符合要求,因此以返回值2退出脚本,表现错误
fi
read -p "please input second number:" secondnum
#读入第二个数字
if [ -n "`echo $secondnum | sed 's/[0-9]//g'`" ];then
print_usage #如果上述条件变量值不为空,说明不是整数,则调用用户帮助函数
fi
echo "${firstnum}${operators}${secondnum}=$((${firstnum}${operators}${secondnum}))"
#上述条件都符合后,进入运算,输出运算表达式和计算结果