1、expr计算整数变量值
格式 :expr arg
例子:计算(2+3)×4 的值
1、分步计算,即先计算2+3,再对其和乘 4
s=`expr 2 + 3`
expr $s \* 4
2 、一步完成计算:
expr `expr 2 + 3 ` \* 4–说明:运算符号和参数之间要有空格分开;通配符号(*),在作为乘法运算符时要用\、“”、‘’符号修饰–:expr 3 \* 2 expr 3 “*” 2 expr 3 ‘*’ 2`(反引号)与键盘上的~同一个键上的符号[fsy@localhost ~]$ s=`expr 2 + 3`
[fsy@localhost ~]$ echo $s
5
[fsy@localhost ~]$ expr $s \* 4
20
[fsy@localhost ~]$ expr `expr 2 + 3` \* 4
20
[fsy@localhost ~]$ expr 2 \* 3
6
[fsy@localhost ~]$ expr 2 "*" 3
6
[fsy@localhost ~]$ expr 2 '*' 3
6
[fsy@localhost ~]$ expr 2 * 3
expr: 语法错误
[fsy@localhost ~]$
2、let命令
格式:let arg1 [arg2 ......]
说明:
与expr命令相比,let命令更简洁直观[ ]表示可以有多个参数,arg n (n=1,2…)运算符与操作数据之间不必用空格分开,但表达式与表达式之间必须要用空格分开当运算符中有<、>、&、|等符号时,同样需要用引号(单引号、双引号)或者斜杠来修饰运算符–例子:计算(2+3)×4 的值
[fsy@localhost ~]$ let s=(2+3)*4
[fsy@localhost ~]$ echo $s
20
[fsy@localhost ~]$3、expr与let性能比较1、expr脚本与执行时间:
2、let脚本与执行时间:
- #!/bin/bash
- s=0
- while [ $s -lt 10000 ]
- do
- s=`expr $s + 1`
- echo $s >>/dev/null 2>&1
- done
- [root@xaosa ~]# time sh expr.sh
real 0m50.776s
user 0m11.528s
sys 0m39.601s
- #!/bin/bash
- s=0
- while [ $s -lt 10000 ]
- do
- let "s = $s + 1"
- echo $s >>/dev/null 2>&1
- done
- [root@xaosa ~]# time sh let.sh
- real 0m0.875s
user 0m0.676s
sys 0m0.199s
通过上面两个例子,不言而喻,很明显 let以超高的优势获胜,let快expr 几十倍!本文来自:http://blog.csdn.net/fansongy/article/details/6724228http://yooma.blog.51cto.com/6965726/1187063