let 与 expr Shell运算比较 let强强胜出

Shell脚本中 整数运算一般通过 let 和 expr 这两个指令来实现,如对变量 s 加 1 可以写作:let "s = $s + 1" 或者 s=`expr $s + 1‘
两者的写法没都很简单,但是性能的比较可以来实例给大家演示一下:

1、expr脚本与执行时间:

  

#!/bin/bash
s=0
while [ $s -lt 10000 ]
do
       s=`expr $s + 1`
       echo $s >>/dev/null 2>&1
done

[[email protected] ~]# time sh expr.sh 

real    0m50.776s
user    0m11.528s
sys     0m39.601s

2、let脚本与执行时间:

#!/bin/bash
s=0
while [ $s -lt 10000 ]
do
       let "s = $s + 1"
       echo $s >>/dev/null 2>&1
done

[[email protected] ~]# time sh let.sh 

real    0m0.875s
user    0m0.676s
sys     0m0.199s

通过上面两个例子,不言而喻,很明显 let以超高的优势获胜,let快expr 几十倍!

转自:http://yooma.blog.51cto.com/6965726/1187063/

时间: 2024-11-04 17:10:20

let 与 expr Shell运算比较 let强强胜出的相关文章

[shell]shell运算

算术运算 首先这里所说的算术运算是指加法(+), 减法(-),乘法(*),整除(/), 求余(%)四种运算,可以通过添加括号改变优先级,并且只能对整数进行运算(Linux Bash Shell默认不支持浮点数运算) #!/bin/bash val=`expr 2 + 2` #expr 参数要为整数 echo "Total value : $val" a=10 b=-5 c=`expr $a + $b` #+前后空一格,否则输a+b=10+20 echo "a+b=$c&quo

[转] linux下shell中使用上下键翻出历史命名时出现^[[A^[[A^[[A^[[B^[[B的问题解决,Linux使用退格键时出现^H解决方法

[From] https://www.zmrbk.com/post-2030.html https://blog.csdn.net/suifengshiyu/article/details/40952771 我的理解是,如果出现如题所描述的问题,这是因为使用了不同的shell程序和对应的stty设置对应关系所综合作用的结果. 这是/bin/sh里面stty -a命令输出的信息: $ stty -a speed 38400 baud; rows 43; columns 209; line = 0;

Shell运算

Bash 支持很多运算符,包括算数运算符.关系运算符.布尔运算符.字符串运算符和文件测试运算符. 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用. expr 是一款表达式计算工具,使用它能完成表达式的求值操作. 例如,两个数相加: #!/bin/bash val=`expr 2 + 2` echo "Total value : $val" 运行脚本输出: 两点注意: 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成

Linux Shell编程(5):整数运算

http://blog.sina.com.cn/s/blog_6db275da0101asmf.html ((i=$j+$k))    等价于 i=`expr $j + $k`((i=$j-$k))     等价于   i=`expr $j -$k`((i=$j*$k))     等价于   i=`expr $j \*$k`((i=$j/$k))     等价于   i=`expr $j /$k` Let expressions 执行一个或多个表达式.表达式中的变量前不必有$.如果表达式中包含了

shell学习笔记之四(整数运算)

算数运算符 shell只支持整数运算 常见的算数运算大多结合shell的内建命令let来使用. + - * / % **(幂运算) += -= *= /= %= 位运算 >> << & | ^ ~ 自增自减 ++ -- 例: let "b=3" let "a=(++b)" 其他算数运算 简单的算数运算过程中,如果有一个值是字符的,那么解析为0 如R+2=2 1.使用$[]作运算 1.到目前看到的$这样的形式有:${}(数组) $[](

Linux | shell脚本-比较判断和运算语句

一.简介 在我们写shell脚本的过程中,经常需要作比较判断,例如比较哪个数字大,判断文件是否存在,判断文件是否是目录,判断是否为真等操作.有时候我们还需要做运行,例如加减乘除等等,今天就来简单介绍比较表达式和运行表达式. 二.shell比较判断 1.文件状态:表达式:[ -e 文件路径 ] 有空格隔开 例如:[ -e /root ] 判断/root 是否存在(1) -e 是否存在 存在为真(2) -d 是否是目录 是目录为真(3) -f 是否是文件 是文件 为真(4) -x 是否有执行权限 有

shell写的一个小脚本

想用shell脚本实现对一个文件夹里所有的图片的像素转换 这里错误的几个地方: 1.定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名的命名须遵循如下规则: 首个字符必须为字母(a-z,A-Z). 中间不能有空格,可以使用下划线(_). 不能使用标点符号. 不能使用bash里的关键字(可用help命令查看保留关键字). 2.使用一个定义过的变量,只要在变量名前面加美元

Linux shell脚本编程详解及应用实例

什么是shell脚本? 1.shell脚本:是一种解释型语言,不需要提前进行编译,只需将代码转化成中间代码,边解释边运行,执行效率稍逊于编译型语言,跨平台性好.而编译型语言则需要提前进行编译转化为二进制文件,靠近底层硬件执行效率高,可移植性差. 2.shell的首行严格来说使用shebang机制:由#和!构成的字符序列,在类unix系统中程序的载入器将其后的内容,当做解释器的指令,并将载有shebang文件路径作为解释器的参数,且予以调用. shell及其他解释型语言的一般格式?  #!/bin

Shell编程初步

一:Hello World 新建一个文件,命名时以 .sh 为后缀.每个bash文件开头第一行表名文件类型: #!/bin/bash 然后在下面输入代码. 比如输出hello world: #!/bin/bash echo "hello world" 运行bash文件: ./文件名.sh (在终端创建的文件用vim编辑保存,ubuntu可以在图形化界面new一个空白文档,通过后缀名识别为bash文件) 二:变量 shell中定义变量,有以下规则: 首个字符必须为字母(a-z,A-Z).