shell中变量是弱类型,所以在进行运算时,需要使用特定的语句格式让shell识别变量类型。
一、算数运算
shell只能进行整型变量的算数运算,支持的运算有:+(加法运算)、-(减法运算)、*(乘法运算)、/(除法运算)、%(取余运算)**(乘方运算)
bash中算数运算时用let关键字来声明后面的语句进行算数运算。
语法:let value=运算表达式
[root@CentOS7 ~]# let a=1+1
[root@CentOS7 ~]# echo $a
2
也可使用value=$[算数表达式]
value=$((算数表达式))
value=declare -i 算数表达式
value=$(expr 算数表达式)
echo 算术表达式 | bc来进行算数运算。
二、赋值运算
与类C语言一样,shell中也可以使用:
+=、++、-=、--、*=、/=、%=
来进行赋值运算,语句格式与算数运算相同。
在赋值运算时应注意value=++value与value=value++的区别。
value=++value时会先对右值value进行累加运算,再对左值进行赋值;
value=value++时会先对左值进行赋值,再对右值进行累加运算。
[root@CentOS7 ~]# value=5
[root@CentOS7 ~]# let value=++value
[root@CentOS7 ~]# echo $value
6
[root@CentOS7 ~]# value=5
[root@CentOS7 ~]# let value=value++
[root@CentOS7 ~]# echo $value
5
三、逻辑运算
顺序执行 ; :按照语句中命令的先后而顺序执行。
与运算 -a:全真为真,有假则假。
或运算 -o:全假为假,有真则真。
非运算 !:非真为假,非假为真。
短路与 &&:语句1为假,则逻辑必假,语句2不执行;
语句1为真,语句2必执行,逻辑真假由语句2决定。
短路非 ||:语句1为真,则逻辑必真,语句2不执行;
语句1为假,语句2必执行,逻辑真假由语句2决定。
异或 ^:两条语句逻辑相同为假,不同为真。
[root@CentOS7 bin]# [ 1 -eq 1 ] && [ 0 -gt 1 ]
[root@CentOS7 bin]# echo $?
1
[root@CentOS7 bin]# [ 1 -eq 1 ] && [ 3 -gt 1 ]
[root@CentOS7 bin]# echo $?
0