SHELL脚本攻略(学习笔记)--1.5 进行数学运算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SHELL脚本攻略(学习笔记)--1.5 进行数学运算相关的知识,希望对你有一定的参考价值。

使用let、(())或[]进行基本的整数运算,使用expr和bc进行高级的运算,包括小数运算。

[[email protected] tmp]# str=10

[[email protected] tmp]# let str=str+6

[[email protected] tmp]# let str-=5

[[email protected] tmp]# echo $str

11

还可以自增、自减运算。

[[email protected] tmp]# let str++;echo $str

12

[[email protected] tmp]# let ++str;echo $str 

13

[[email protected] tmp]# let str--;echo $str 

12

[[email protected] tmp]# let --str;echo $str 

11

如果要让运算处于命令之中,即不需要额外的赋值行为,可以使用$(())。

[[email protected] tmp]# echo $((str++))

12

[[email protected] tmp]# echo $((str--))  #从这个结果中是否发现了问题?

13

[[email protected] tmp]# echo $((str--))

12

[[email protected] tmp]# echo $((str++))  #还有这个结果

11

[[email protected] tmp]# echo $((str++))

12

不知道是我计算不来,还是$(())的问题,如果是$(())后缀自加(i++)和后缀自减(i--),则在后缀自增后再后缀自减将再执行一次自增行为,反之自减到自增也是。 

但是使用$(())计算前缀自增和自减变换时没问题,let自增自减也都没有问题。

[[email protected] tmp]# echo $((--str))

12

[[email protected] tmp]# echo $((--str))

11

[[email protected] tmp]# echo $((++str))  #结果正常

12

[[email protected] tmp]# echo $((++str))

13

[[email protected] tmp]# echo $((--str))

12

使用[]也可以。

[[email protected] tmp]# echo $[str=$str+6]  #在[]中使用了变量符号$

18

[[email protected] tmp]# echo $[str=str+6]  #[]中没有使用$符号

24

但是如果$[$str=str+6]或$[$str=$str+6]将出错。

[[email protected] tmp]# echo $[$str=str+6]

-bash: 24=str+6: attempted assignment to non-variable (error token is "=str+6")

[[email protected] tmp]# echo $[$str=$str+6]

-bash: 24=24+6: attempted assignment to non-variable (error token is "=24+6")

总结下变量的运算方法:

[[email protected] tmp]# i=10

[[email protected] tmp]# let i=i-1

[[email protected] tmp]# let i-=1

[[email protected] tmp]# i=$((i-1))

[[email protected] tmp]# i=$[ i - 1 ]  #中括号隔壁必须写空格

[[email protected] tmp]# i=$[ $i - 1 ]

以上是关于SHELL脚本攻略(学习笔记)--1.5 进行数学运算的主要内容,如果未能解决你的问题,请参考以下文章

LinuxShell脚本攻略--第一章

SHELL脚本攻略(学习笔记)--1.8 别名

SHELL脚本攻略(学习笔记)--1.7 数组

SHELL脚本攻略(学习笔记)--1.12 read基础

SHELL脚本攻略(学习笔记)--1.4 变量(基础)

SHELL脚本攻略(学习笔记)--1.2 echo和printf打印输出