shell基础 元字符

元字符

元字符指的是能够被shell解释的特殊字符,每个特殊字符都有其特殊含义,这些字符一方面可用于变量值的运算、我们可以称之为运算符,另外一方面可以和shell命令配合使用来达到更高级的效果

一 算数运算符

算数运算符需要配合下述操作使用

# 浮点运算
bc  

# 整数运算
expr
$(())
$[]
let

bc是比较常用的linux计算工具了,而且支持浮点运算

[root@m01 ~]# res=`echo 1+1 | bc`				
[root@m01 ~]# echo $res
2
[root@m01 ~]# res=`echo 10 % 3| bc`				% 取余数		
[root@m01 ~]# echo $res
1
[root@m01 ~]# res=`echo 1.2+1.3|bc`
[root@m01 ~]# echo $res
2.5
[root@m01 ~]# res=`echo 5.0+3.0|bc`
[root@m01 ~]# echo $res
8.0
[root@m01 ~]# res=`echo "scale=2;5.0/3.0"|bc`			/ 除(取相除后的值,scale=2保留两位小数)
[root@m01 ~]# echo $res
1.66
[root@m01 ~]# res=`echo "scale=3;5.0/6.0"|bc`			/ 除(取相除后的值,scale=3保留三位小数)
[root@m01 ~]# echo $res
.833

expr不支持浮点数计算,而且要注意数字与运算符中的空格

[root@m01 ~]# res=`expr 5 / 3`				# 不支持浮点计算
[root@m01 ~]# echo $res
1
[root@m01 ~]# res=`expr 1+1`			  # 注意:要有空格
[root@m01 ~]# echo $res
1+1
[root@m01 ~]# res=`expr 1 + 1`
[root@m01 ~]# echo $res
2

如果是乘法,需要转义\*
[root@m01 ~]# expr 3 \* 10
30

$(( )) 同expr,不支持浮点数运算

[root@m01 ~]# echo $((1+1))
2
[root@m01 ~]# echo $((1.0+1.0))				$(())不支持浮点数运算
-bash: 1.0+1.0: syntax error: invalid arithmetic operator (error token is ".0+1.0")

# 注意:
echo $(($num1+$num2))  # 也可以简写为 echo $((num1+num2)) 
echo $(((5-3)*2))  # 可以嵌套括号     

let 不支持浮点数运算,而且不支持直接输出,只能赋值

[root@m01 ~]# let res=1+1
[root@m01 ~]# echo $res
2
[root@m01 ~]# let res=10/2
[root@m01 ~]# echo $res
5
[root@m01 ~]# let c=1.3*3
-bash: let: c=1.3*3: syntax error: invalid arithmetic operator (error token is ".3*3")
上一篇:[转]你如何面对—LNMP高并发时502


下一篇:RHEL7 添加用户,含sudo权限