在 Shell 中,expr 命令是 evaluate expressions 的缩写,译为 “表达式求值”。Shell expr 是一个功能强大,并且比较复杂的命令,它除了可以实现整数计算,还可以结合一些选项对字符串进行处理,例如计算字符串长度、字符串比较、字符串匹配、字符串提取等。
expr exprisson
参数 | 描述 |
---|---|
exprisson | 要计算的表达式 |
expr 对表达式的格式有几点特殊的要求:
出现在表达式中的运算符、数字、变量和小括号的左右两边至少要有一个空格,否则会报错。
有些特殊符号必须用反斜杠 \
进行转义(屏蔽其特殊含义),比如乘号 *
和小括号 ()
,如果不用 \
转义,那么 Shell 会把它们误解为正则表达式中的符号( *
对应通配符,()
对应分组)。
使用变量时要加 $
前缀。
我们在终端输入以下代码,实现整数计算,具体代码如下:
expr 10 +20
运行后,终端输出如下:
我们看到,我们在使用 expr 进行整数运算时,加号后面没有加空格,此时程序报错,因此,使用 expr 进行运算时,运算符后面必须要加空格,现在,我们修改程序如下:
expr 10 + 20
运行后,终端输出如下:
我们看到,此时,程序正常了。
我们在终端输入以下代码,实现整数计算,具体代码如下:
expr 4 * 5
运行后,终端输出如下:
我们看到,我们在使用 expr 进行乘法运算时,此时程序报错,因为,乘法运算需要使用转义字符进行转义,现在,我们修改程序如下:
expr 4 \* 5
运行后,终端输出如下:
我们看到,此时,程序正常了。
我们在终端输入以下代码,实现整数计算,并使用小括号修改程序优先级,具体代码如下:
expr 2 + ( 4 \* 5 )
运行后,终端输出如下:
我们看到,我们在使用 expr 进行小括号运算时,此时程序报错,因为,小括号运算需要使用转义字符进行转义,现在,我们修改程序如下:
expr 2 + \( 4 \* 5 \)
运行后,终端输出如下:
我们看到,此时,程序正常了。
我们在终端输入以下代码,实现整数计算,并使用小括号修改程序优先级,具体代码如下:
m=5 n=`expr $m + 10` echo $n
运行后,终端输出如下:
我们看到,我们将计算结果赋值给了一个变量。
expr 对表达式的格式有几点特殊的要求:
出现在表达式中的运算符、数字、变量和小括号的左右两边至少要有一个空格,否则会报错。
有些特殊符号必须用反斜杠 \
进行转义(屏蔽其特殊含义),比如乘号 *
和小括号 ()
,如果不用 \
转义,那么 Shell 会把它们误解为正则表达式中的符号( *
对应通配符,()
对应分组)。
使用变量时要加 $
前缀。