SHELL学习笔记之变量的数值计算

变量的数值计算

  • 算术运算符:如果要执行算术运算,就会离不开各种运算符号,和其他编程语言类似,shell 也有很多算术运算符


  • 算术运算命令:
  • 双小括号"(())"数值运算命令:双小括号的作用时进行数值运算与数值比较,它的效率很高,用法灵活,是企业场景运维人员经常采用的运算操作符。
  • 利用(())进行简单的数值计算
[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
  • (())运算的 shell 脚本示例
#!/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))"


  • 四则运算计算器
#!/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}))" 
#上述条件都符合后,进入运算,输出运算表达式和计算结果





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值