`

shell中let和expr用法及性能比较

阅读更多

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脚本与执行时间:
  1. #!/bin/bash
  2. s=0
  3. while [ $s -lt 10000 ]
  4. do
  5.        s=`expr $s + 1`
  6.        echo $s >>/dev/null 2>&1
  7. done
  8. [root@xaosa ~]# time sh expr.sh 

    real    0m50.776s
    user    0m11.528s
    sys     0m39.601s
2、let脚本与执行时间:

  1. #!/bin/bash
  2. s=0
  3. while [ $s -lt 10000 ]
  4. do
  5.        let "s = $s + 1"
  6.        echo $s >>/dev/null 2>&1
  7. done
  8. [root@xaosa ~]# time sh let.sh 
  9. real    0m0.875s
    user    0m0.676s
    sys     0m0.199s

通过上面两个例子,不言而喻,很明显 let以超高的优势获胜,let快expr 几十倍!
 
本文来自:http://blog.csdn.net/fansongy/article/details/6724228
http://yooma.blog.51cto.com/6965726/1187063
分享到:
评论

相关推荐

    shell 编程指南pdf

    17.5 expr用法 157 17.5.1 增量计数 158 17.5.2 数值测试 158 17.5.3 模式匹配 158 17.6 小结 159 第18章 控制流结构 160 18.1 退出状态 160 18.2 控制结构 160 18.2.1 流控制 161 18.2.2 循环 161 18.3 if then ...

    开源项目-antonmedv-expr.zip

    开源项目-antonmedv-expr.zip,expr是一个业务规则引擎

    shell 编程(中文)[pdf]

    002_使用find和xargs.pdf 003_后台执行命令_crontab_at.pdf 004_文件名置换_匹配文件名中的字符.pdf 005_echo_read_cat_管道_tee_标准输入输出和错误_重定向标准输入输出和错误_exec.pdf 006_命令执行顺序.pdf 007_...

    LINUX与UNIX SHELL编程指南(很全)

    17.5 expr用法 157 17.5.1 增量计数 158 17.5.2 数值测试 158 17.5.3 模式匹配 158 17.6 小结 159 第18章 控制流结构 160 18.1 退出状态 160 18.2 控制结构 160 18.2.1 流控制 161 18.2.2 循环 161 18.3 if then ...

    Shell脚本专家指南

    主要内容包括如何使小到中型的系统管理任务自动化,分析系统数据并编辑配置文件,使用bash和ksh等编写IAnux、Unix和OSX应用程序的脚本文件等。 《Shell脚本专家指南》面向中高级的shell程序员,以及需要解决日常问题...

    跟老男孩学Linux运维:Shell编程实战

    / 223.2 环境变量 / 233.3 普通变量 / 313.4 变量定义技巧总结 / 40第4章 Shell变量知识进阶与实践 / 414.1 Shell中特殊且重要的变量 / 414.2 bash Shell内置变量命令 / 524.3 Shell变量子串知识及实践 ...

    Java表达式计算引擎:Expr4J

    public class TestExpr4j { /** * @param args */ public static void main(String[] args) { SimpleEvaluationContext context = new SimpleEvaluationContext(); System.out.println("Expr ...

    LINUX与UNIX SHELL编程指南 高清PDF

    17.5 expr用法 157 17.5.1 增量计数 158 17.5.2 数值测试 158 17.5.3 模式匹配 158 17.6 小结 159 第18章 控制流结构 160 18.1 退出状态 160 18.2 控制结构 160 18.2.1 流控制 161 18.2.2 循环 161 18.3 if then ...

    Linux与unix shell编程指南

    19.6 在shell中使用函数 204 19.7 创建函数文件 204 19.8 定位文件 205 19.9 检查载入函数 205 19.10 执行shell函数 205 19.10.1 删除shell函数 206 19.10.2 编辑shell函数 206 19.10.3 函数举例 207 19.10.4 将函数...

    shell编程和unix命令

    17.5 expr用法 157 17.5.1 增量计数 158 17.5.2 数值测试 158 17.5.3 模式匹配 158 17.6 小结 159 第18章 控制流结构 160 18.1 退出状态 160 18.2 控制结构 160 18.2.1 流控制 161 18.2.2 循环 161 18.3 if then ...

    Linux shell脚本 精华中文版

    002_使用find和xargs.pdf 003_后台执行命令_crontab_at.pdf 004_文件名置换_匹配文件名中的字符.pdf 005_echo_read_cat_管道_tee_标准输入输出和错误_重定向标准输入输出和错误_exec.pdf 006_命令执行顺序.pdf ...

    Linux expr命令用法详解

    Linux expr命令 expr命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串。 语法 expr 表达式 表达式说明: 用空格隔开每个项; 用 / (反斜杠) 放在 shell 特定的...

    绝版经典《Linux与UNIX Shell编程指南》

    19.6 在shell中使用函数 204 19.7 创建函数文件 204 19.8 定位文件 205 19.9 检查载入函数 205 19.10 执行shell函数 205 19.10.1 删除shell函数 206 19.10.2 编辑shell函数 206 19.10.3 函数举例 207 19.10.4 将函数...

    shell教程-30章,下了之后会让你大吃一惊,相当好

    17.5 expr用法 157 17.5.1 增量计数 158 17.5.2 数值测试 158 17.5.3 模式匹配 158 17.6 小结 159 第18章 控制流结构 160 18.1 退出状态 160 18.2 控制结构 160 18.2.1 流控制 161 18.2.2 循环 161 18.3 if then ...

    shell编程中的字符串截取方法小结

    一、Gnu Linux shell 截取字符变量的前8位,有方法如下: 1.expr substr “$a” 1 8 2.echo $a|awk ‘{print substr(,1,8)}’ 3.echo $a|cut -c1-8 4.echo $ 5.expr $a : ‘\(.\\).*’ 6.echo $a|dd bs=1 count=8 2&gt;...

    Linux与Unix Shell编程指南(PDF格式,共30章)

    17.5 expr用法 157 17.5.1 增量计数 158 17.5.2 数值测试 158 17.5.3 模式匹配 158 17.6 小结 159 第18章 控制流结构 160 18.1 退出状态 160 18.2 控制结构 160 18.2.1 流控制 161 18.2.2 循环 161 18.3 if then ...

    linux shell 编程教程

    17.5 expr用法 157 17.5.1 增量计数 158 17.5.2 数值测试 158 17.5.3 模式匹配 158 17.6 小结 159 第18章 控制流结构 160 18.1 退出状态 160 18.2 控制结构 160 18.2.1 流控制 161 18.2.2 循环 161 18.3 if then ...

Global site tag (gtag.js) - Google Analytics