整型的计算要放在双括号之间或者放在内置命令let的后面,例如:
如果整型的计算没有放在双括号之间,也没有放在let的后面,会怎样呢?
u被定义为了字符串x-y。将其放在let的后面,或者放入双括号里,就得到想要的结果了:
还可以直接对加减乘除式子进行计算,并显示其值。遵从由左至右、先乘除后加减、括号里面最优先的四则运算法则,如:
两个不能整除的整数相除时,原本应该得到小数,但小数点后面的部分不被保留。这是由于Bash只有整型数,没有实型数,小数点后面的部分会被丢弃而不是四舍五入。下例中,原本50除以20为2.5,50除以30为1.667,但实际上分别得到整数值2和1,小数点后面的部分会被丢弃:
%为求余运算符,下例中50除以30、除以20、除以16的余数分别为20、10和2:
**为幂运算符,下例中打印出来9的平方值和9的立方值,分别是81和729:
与C语言一样,Bash支持++运算和--运算。++和--分别为变量的自加和自减运算。当++位于变量的右边时为“先用后加”。看了下例就明白了,执行echo$((i++))时,“先用”,就是先使用i的值,显示9,“后加”,i的值自加1,再执行echo$i,显示10:
当++位于变量的左边时为“先加后用”。看下例,执行echo$((++i))时,“先加”,就是先将i的值加1,“后用”,而后再显示i的值,则显示10,接着再执行echo$i,i的值已经是10了,当然还显示10:
(www.xing528.com)
同样,当--位于变量的右边时为先用后减;当--位于变量的左边时为先减后用。++和--是单目运算符,+,-,*,/,%等是双目运算符。
与C语言一样,Bash支持+=、-=、*=、/=和%=等运算。见下例,k+=1相当于k=k+1,m-=k相当于m=m-k:
Bash还支持位运算等多种运算。Bash支持的运算符见表4-1。
表4-1 Bash运算符
像在C语言里面一样,关系运算(<、<=、>、>=、==、!=)的结果,如果是0,表示假,1表示真。例如,4>5是假的,8>=7是真的:
关系运算的结果,0表示假,1表示真;Linux命令执行成功则退出状态为0,非0意味执行失败。这句话中的两个0代表的意思是不一样的,要注意区分。
一个假与一个真的逻辑或的结果为真:
下面讲解表4-1中的三目运算符,它的语法格式为:
问号前面是判断条件,如果条件满足时取结果1,不满足时取结果2。看下面的例子,2>1是成立的,三目运算结果为5,所以a的值为5:
下面的例子,2>3不成立,三目运算结果为8,所以b的值为8:
以上在双小括号里面的计算,也可以放在中括号里面进行。例如:
Bash运算符的用法与C语言的基本上是一致的,这里就不一一列举了。实际上,数值运算不是Bash的强项,一般的Bash脚本中只有数值不大的整数运算,如控制循环次数,对某个操作的计数等。如果要进行整数运算或者精度要求不高的浮点数运算,可以使用C或者Fortran语言;如果要进行精度要求较高的浮点数运算,应该使用Fortran、MATLAB或者Mathematica。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。