数值计算

shell 包含三个命令:bc、expr、let可用于数值计算。

输入:整数,let和expr都无法进行浮点运算,但是bc和awk可以。

输出:bc、expr可直接显示计算结果;let则丢弃计算结果,可通过传递结果到变量,取变量值获得计算结果。

格式示例:

bc

[root@localhost ~]# echo 300 + 5 |bc

305

[root@localhost ~]# echo 300 - 5 |bc

295

[root@localhost ~]# echo 300 /* 5 |bc

1500

[root@localhost ~]# echo 300 / 5 |bc

60

--------------------------------------------------------

expr

[root@localhost ~]# expr 300 + 5

305

[root@localhost ~]# expr 300 - 5

295

[root@localhost ~]# expr 300 /* 5

1500

[root@localhost ~]# expr 300 / 5

60

------------------------------------------------------

let

[root@localhost ~]# let i=300+5

[root@localhost ~]# echo $i

305

[root@localhost ~]# let i=300-5

[root@localhost ~]# echo $i

295

[root@localhost ~]# let i=300/*5

[root@localhost ~]# echo $i

1500

[root@localhost ~]# let i=300/5

[root@localhost ~]# echo $i

60

-----------------------------------------------------

经测试,bc允许运算量和运算符之间无空格,let 不允许有空格,expr运算量和运算符之间必须有空格。

[root@localhost ~]# let i = 5 + 3

-bash: let: =: syntax error: operand expected (error token is "=")

[root@localhost ~]# echo 300+5 |bc

305

[root@localhost ~]# expr 300+5

300+5


字符数值转换

shell去除字符串前所有的0

[root@localhost sh]# str=00007985566465

[root@localhost sh]# str_new=$(echo -e $str | sed -r 's/0*([0-9])/\1/')

[root@localhost sh]# echo $str_new

7985566465

字符串转数值

a=“08”

b=echo $a|awk '{print int($0)}'

echo $b

输出:8