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.youkuaiyun.com/fansongy/article/details/6724228http://yooma.blog.51cto.com/6965726/1187063
本文对比了Linux shell中expr和let命令在进行算术运算时的使用方法与性能差异。expr命令适用于需要转义特殊字符的情况,而let命令更为简洁且执行效率更高,实测表明let命令比expr命令快数十倍。
1万+

被折叠的 条评论
为什么被折叠?



