算数运算符如下:

运算操作符与运算命令:

1、双小括号“( ( ) )”数值运算命令

双小括号“ ( ( ) ) ”的作用是进行数值运算与数值比较,它的效率最高,用法灵活,是经常被采用的运算操作符,其操作方法如下:

执行echo$((a++))和echo$((a--))命令输出整个表达式时,输出的值即为a的值,表达式执行完毕后,会对a进行++、--的运算,而执行echo$((++a))和echo$((--a))命令输出整个表达式时,会先对a进行++、--的运算,然后再输出表达式的值,即为a运算后的值。

注意:有关++、--运算的记忆方法:变量a在运算符之前,输出表达式的值为a,然后a自增或自减;变量a在运算符之后,输出表达式会先自增或自减,表达式的值就是自增或自减后a的值。“(())”表达式在命令行执行时不需要加$符号,直接使用((6%2))形式即可,但是如果需要输出,就要加$符,例如:echo$((6%2))。“(())”里的所有字符之间没有空格、有一个或多个空格都不会影响结果。

使用举例:

[root@localhost ~]# echo $(( 6+2 ))    #加法8[root@localhost ~]# echo $(( 6-2 ))    #减法4[root@localhost ~]# echo $(( 6*2 ))    #乘法12[root@localhost ~]# echo $(( 6/2 ))    #除法3[root@localhost ~]# echo $(( 6%2 ))    #取余0[root@localhost ~]# echo $(( 6**2 ))    #求平方36[root@localhost ~]# a=3     #给变量赋值[root@localhost ~]# echo $(( a++ ))    #先输出变量值,再+13[root@localhost ~]# echo ${a}     #再查看变量,发现+1了4[root@localhost ~]# echo $(( a-- ))   #先输出变量值,再-14[root@localhost ~]# echo ${a}    #再查看变量,发现-1了3[root@localhost ~]# echo $(( ++a ))    #先+1,再输出变量值,输出的是+1后的值4[root@localhost ~]# echo ${a}     #确认变量值4[root@localhost ~]# echo $(( --a ))     #先-1,再输出变量值3[root@localhost ~]# echo ${a}      #查看确认3

2、let运算命令的用法

let赋值表达式的功能等同于“((赋值表达式))”

使用举例:

[root@localhost ~]# i=1[root@localhost ~]# echo $i1[root@localhost ~]# let i=i+8     #加8[root@localhost ~]# echo $i      #输出9[root@localhost ~]# let i=i-1     #i-1[root@localhost ~]# echo $i     #输出8[root@localhost ~]# let i++     #我在shell  script中常使用这种方法,默认+1[root@localhost ~]# echo $i9[root@localhost ~]# let i--       #i-1[root@localhost ~]# echo $i8

3、expr命令的用法

作用:

expr(evaluate(求值)expressions(表达式))命令既可以用于整数运算,也可以用于相关字符串长度、匹配等的运算处理。

(1)expr用于计算:

[root@localhost ~]# expr 2 + 35[root@localhost ~]# expr 2 \* 3     #*号需要转义后使用6[root@localhost ~]# expr 6 / 32[root@localhost ~]# expr 7 % 31

在使用expr时需要注意:

运算符及用于计算的数字左右都至少有一个空格,否则会报错。
使用乘号时,必须用反斜杠将其进行转义(转为普通字符),因为Shell可能会误解星号的含义。
(2)expr配合变量计算

[root@localhost ~]# i=5[root@localhost ~]# i=`expr ${i} + 5`      #需要使用反撇号将其括起来,注意变量和数字符号两边要有空格[root@localhost ~]# echo ${i}10

(3)判断一个变量值或字符串是否为整数

实现原理是,利用以expr做计算时变量或字符串必须是整数的规则,把一个变量或字符串和一个已知的整数(非0)相加,看命令返回的值是否为0。如果为0,就认为做加法的变量或字符串为整数,否则就不是整数。

示例1:

[root@localhost ~]# a=2        [root@localhost ~]# expr ${a} + 57[root@localhost ~]# echo $?       #输出为0,说明变量a是一个整数0[root@localhost ~]# b=lvjianzhao    #定义一个字符变量[root@localhost ~]# expr ${b} + 5    #实际上会直接报错expr: 非整数参数[root@localhost ~]# echo $?       #输出为非0,则表示变量b不是一个整数2

示例2:

[root@localhost ~]# vim test.sh #!/bin/bashexpr $1 + 4 &> /dev/nullif [ $? -eq 0 ]        then          echo int        else          echo charsfi[root@localhost ~]# sh test.sh aaa    chars                   #输出的结果是字符串[root@localhost ~]# sh test.sh 34int               #输出的结果是整数型

示例3:

#!/bin/bashtuichu(){        exit 1}while truedo        read -p "pls input:" a        if [ $a == exit ]          then                tuichu              #调用开头定义的函数        fi        expr $a + 0 > /dev/null 2>&1        [ $? -eq 0 ] && echo int || echo charsdone[root@localhost ~]# sh test.sh     #执行脚本pls input:22             #输入数字进行测试intpls input:dfdf           #输入字符进行测试charspls input:exit            #输入exit,将触发函数,而退出脚本,若不定义这个函数,只能通过ctrl+c强制中断脚本执行chars[root@localhost ~]#

4、bc计算机的用法

(1)直接在命令模式下输入bc,按下回车后即可直接使用,如下:

[root@localhost ~]# bc      #输入bc进入计算机环境bc 1.06.95                                 ........................#省略部分内容1+8         #输入后按回车即可得到结果99/336*212

(2)将bc用在命令行下面,以实现运算功能:

[root@localhost ~]# echo 3+4 | bc       #通过echo命令结合管道符输出到bc计算机7[root@localhost ~]# echo "3.4+5.6" | bc9.0[root@localhost ~]# echo "3.2-2.5" | bc.7[root@localhost ~]# echo "scale=2;355/113" | bc   #使用scale参数可以设置保留的小数位3.14[root@localhost ~]# echo "scale=6;355/113" | bc3.141592

(3)利用bc配合变量运算:

[root@localhost ~]# i=5[root@localhost ~]# i=`echo $i+6|bc`    利用echo输出,通过管道符交给bc,此方法效率较低,一般不使用。[root@localhost ~]# echo $i11

提示:根据bc所具有的特殊性来看,如果是小数,则选择bc运算没有问题(更推荐使用awk);若是整数场景,可用“( ( ) )”、let、expr等。

4)使用一条命令计算输出1+2+3....+10的表达式,并计算结果(使用bc计算机实现)

生成1+2+3....+10表达式的方法有:

[root@localhost ~]# seq -s "+" 10           #seq是生成数字序列,-s是指定数字序列之间的分隔符1+2+3+4+5+6+7+8+9+10[root@localhost ~]# echo {1..10} | tr " " "+"   #生成以空格为间隔的数字序列,并交给tr将空格替换为+号1+2+3+4+5+6+7+8+9+10

实现上面需求的多种方法如下:

#使用bc计算[root@localhost ~]# echo `seq -s "+" 10`=`seq -s "+" 10 | bc`1+2+3+4+5+6+7+8+9+10=55#使用(())计算[root@localhost ~]# echo `seq -s "+" 10`=$((`seq -s "+" 10`))1+2+3+4+5+6+7+8+9+10=55#使用expr计算[root@localhost ~]# echo `seq -s '+' 10`=`seq -s " + " 10|xargs expr`1+2+3+4+5+6+7+8+9+10=55使用$[ ] 来计算[root@localhost ~]# echo `seq -s '+' 10`=$(echo $[ `seq -s '+' 10` ])1+2+3+4+5+6+7+8+9+10=55

5、awk实现计算功能

利用awk进行运算的效果也很好,适合小数和整数,特别是命令行计算,尤其是小数,运算很精准,好用

使用举例:

## ## [root@localhost ~]# echo "7.7 8.5" |awk '{print ($1-$2)}'## -0.8## [root@localhost ~]# echo "7.7 3.5" |awk '{print ($1-$2)}'## 4.2## [root@localhost ~]# echo "358 114" | awk '{print ($1-2)/$2}'## 3.12281## [root@localhost ~]# echo "3 8" | awk '{print ($1+3)*$2}'## 48

6、declare(同typeset)命令的用法

需要使用typeset定义整数变量,直接进行计算,这个方法不常用,因为需要定义才能生效。

使用范例:

[root@localhost ~]# declare -i A=20 B=3    #-i参数可以将变量定义为整型[root@localhost ~]# A=A+B    #因为已声明是整型,因此可以直接进行运算了。[root@localhost ~]# echo $A     #输出查看23

7、$[ ]符号的运算

格式基本如下(至于运算符,则和其他的运算工具一样)

[root@localhost ~]# i=4[root@localhost ~]# i=$[i+3][root@localhost ~]# echo ${i}7[root@localhost ~]# echo $[2*3]6[root@localhost ~]# echo $[9/3]3[root@localhost ~]# echo $[10%3]1[root@localhost ~]# echo $[1%3]1[root@localhost ~]# echo $[3/2]1

———————— 本文至此结束,感谢阅读 ————————

©著作权归作者所有:来自51CTO博客作者mb5c7bb57d7f7e8的原创作品,如需转载,请注明出处,否则将追究法律责任

你的鼓励让我更有动力

赞赏

0人进行了赞赏支持

更多相关文章

  1. iMove 如何输出影片、mp4 档案格式及调整画质?
  2. 练习2-3 输出倒三角图案 (5分)
  3. 矩阵的乘法运算与css的3d变换(transform)
  4. php运算符、流程控制、文件引入
  5. Spring Boot利用Logback输出日志到指定位置的简单配置及使用方式
  6. php的初步认识与常用数据类型
  7. 运算符、流程控制、循环与文件包含
  8. C++入门第一课(命名空间;输入输出;缺省参数;函数重载)
  9. ||运算你真的了解吗?

随机推荐

  1. android google map apiKey 相关操作
  2. Android ListView中的Button屏蔽onItemCl
  3. Windows上搭建android开发环境
  4. Android IOS WebRTC 音视频开发总结(十五)-
  5. Android异步加载图像小结
  6. Android Ant更新项目
  7. 系出名门Android(8) - 控件(View)之TextS
  8. android中 google map计算两GPS点间距离
  9. Android实现TextView字符串波浪式跳动
  10. 页面未随软键盘上升及android隐藏软键盘