let命令的用法
[[email protected] shell]# i=2
[[email protected] shell]# let i=i+8
[[email protected] shell]# echo $i
10
[[email protected] shell]# i=i+8
[[email protected] shell]# echo $i
10+8
[[email protected] shell]#
从上面可以看出如果没有用let的话,是不会计算的,就把我们的计算公式看成一个字符串来用
expr命令的用法
expr命令一般用于整数值,但也可用于字符串,用来求表达式变量的值,同时expr也是一个手工命令行计算器也就是说它自己本身就有计算功能的,如图
[[email protected] shell]# expr 2 - 2
0
[[email protected] shell]# expr 2 + 2
4
[[email protected] shell]# expr 2 \* 2
4
[[email protected] shell]# expr 2 \/ 2
1
[[email protected] shell]# expr 2 \% 2
0
[[email protected] shell]#
一般在shell里面的用法也是这样的
[[email protected] shell]# result="$(expr 3 + 4)"
[[email protected] shell]# echo $result
7
注意:运算符左右都有空格的,使用符号的时候最好给反斜线屏蔽其特定含义
在循环中可用于增量计算,不过一般我们用let命令,如果你用[]的话可以不用空括号
[[email protected] shell]# expr $[2+3]
5
[[email protected] shell]# expr $[4+5]
9
expr可以用来判断某个文件是不是某个后缀的,如
[[email protected] shell]# expr "id_dsa.pub" : ".*.pub"
10
如果是pub后缀就会输出这个文件名字符串的长度。如果不是的话就会输出0
可以判断变量是否为整数,如图
[[email protected] shell]# cat compute.sh
#!/bin/bash
read -p "please input:" a
expr $a + 0 &>/dev/null
[ $? -eq 0 ] && echo int || echo chars
[[email protected] shell]# sh compute.sh
please input:a
chars
[[email protected] shell]# sh compute.sh
please input:1
int
[[email protected] shell]#
bc命令的用法
bc是unix下的计算器,它也可以用在命令行下面,bc支持科学计算,所以经常用,一般的用法如下
[[email protected] shell]# echo 5.1+5|bc
10.1
[[email protected] shell]# echo 5.1+10|bc
15.1
[[email protected] shell]# seq -s "+" 100|bc
5050
[[email protected] shell]#
scale是指保留小数点后几位
obase是把十进制转换为二进制
[[email protected] shell]# echo "scale=2;5.23/3.13"|bc
1.67
[[email protected] shell]# echo "scale=3;5.23/3.13"|bc
1.670
[[email protected] shell]# echo "obase=2;8"|bc
1000
bc的特点是支持小数运算。
可以看看著名的杨辉三角(主要看第一种就可以啦)
http://oldboy.blog.51cto.com/2561410/756234