let和expr的区别

一、expr计算整数变量值


格式 :expr arg

例子:计算(2+3)×4的值
1、分步计算,即先计算2+3,再对其和乘
4
s=`expr 2 + 3`
expr $s \* 4
2
、一步完成计算:
expr  `expr 2 + 3 `  \* 4

说明:
(1)运算符号和参数之间必须要有空格分开;
(2)通配符号(*),在作为乘法运算符时要用\“”‘’符号修饰,
   如:  expr 3 \* 2         expr 3 “*” 2       expr 3 ‘*’ 2 
(3)对包含空格和其他特殊字符的字符串要用引号括起来;
(4)操作符和两个expression之间必须有空格且Expr 不适合小数的运算。
 
[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 ~]$
 
二、let命令

格式:let arg1 [arg2 ......]

说明:

 与expr命令相比,let命令更简洁直观,  [ ]表示可以有多个参数,arg n (n=1,2…)
 比expr运算效率更高,更节省时间。
(1)运算符与操作数据之间不必用空格分开,但表达式与表达式之间必须要用空格分开;
(2)当运算符中有<、>、&、|等符号时,同样需要用引号(单引号、双引号)或者斜杠来修饰运算符;
(3)用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量。如果表达式中包含了空格或其他特殊字符,则必须引起来;
(4)只能执行整数的相关操作,运算结果也只能保存整数;
 ( 5)  let必须是完整的算术表达式,即有等号两边(自增和自减除外)。

例子:计算(2+3)×4的值
[fsy@localhost ~]$ let s=(2+3)*4
[fsy@localhost ~]$ echo $s
20
[fsy@localhost ~]$
let i=$i+1    可以写成let i++来简化书写

你可能感兴趣的:(let和expr的区别)