expr
在类似Unix的操作系统上,expr命令将参数作为表达式求值。 本文档介绍了expr的GNU / Linux版本。
查看英文版
1 expr 运行系统环境
2 expr 语法
3 expr 例子
expr 运行系统环境
Linux
expr 语法
expr EXPRESSION
expr OPTION
选件
--help | 显示帮助消息并退出。 |
--version | 显示版本信息并退出。 |
表达方式
expr将EXPRESSION的值输出到标准输出。下面的空白行将增加的优先级组分开。
表达式可能是:
ARG1 | ARG2 | 如果ARG1既不为null也不为0,则为ARG2。 |
ARG1 & ARG2 | 如果两个参数都不为null或0,则为ARG1,否则为0。 |
ARG1 < ARG2 | ARG1小于ARG2。 |
ARG1 <= ARG2 | ARG1小于或等于ARG2。 |
ARG1 = ARG2 | ARG1等于ARG2。 |
ARG1 != ARG2 | ARG1不等于ARG2。 |
ARG1 >= ARG2 | ARG1大于或等于ARG2。 |
ARG1 > ARG2 | ARG1大于ARG2。 |
ARG1 + ARG2 | ARG1和ARG2的算术和。 |
ARG1 - ARG2 | ARG1和ARG2的算术差。 |
ARG1 * ARG2 | ARG1和ARG2的算术积。 |
ARG1 / ARG2 | ARG1的算术商除以ARG2。 |
ARG1 % ARG2 | ARG1的算术余数除以ARG2。 |
STRING : REGEXP | 正则表达式 REGEXP在STRING中的锚模式匹配。 |
匹配STRING REGEXP | 与STRING : REGEXP相同。 |
小于STRING POSLENGTH | 子串的STRING,POS从1计数。 |
索引 STRING CHARS | 找到任何CHARS的STRING中的索引,或者0。 |
长度STRING | 长度:STRING。 |
+ TOKEN | 将TOKEN解释为字符串,即使它是诸如match的关键字或类似于/的运算符。 |
( 表达 ) | EXPRESSION的价值。 |
使用注意事项
- 请注意,许多操作符需要转义或引用以由shell正确解释。
- 如果两个ARG都是数字,则比较是算术运算,否则比较是按字典顺序。
- 模式匹配返回\(和\)或null 之间匹配的字符串;如果不使用\(和\),则它们返回匹配的字符数或0。
- 如果EXPRESSION既不为null也不为0,则退出状态为0;如果EXPRESSION为null或0,则退出状态为1;如果EXPRESSION在语法上无效,则为2;如果发生错误,则为3。
查看英文版
expr 例子
expr text : '.*'
执行正则表达式匹配。冒号后的正则表达式与冒号前的文本匹配。返回的输出是匹配的字符数。在这里,正则表达式'。*'表示“任意数量的任何字符”,因此结果为:
4
expr text : tex
返回冒号后的正则表达式中出现在冒号之前的文本中的字符数。在这里,正则表达式'tex'表示“恰好是连续字符t,e和x ”,因此输出为:
3
expr text : '\(.*\)'
在这里,正则表达式'\(。* \)'表示“与模式。*匹配的实际文本(无论在括号之间出现什么,都用反斜杠转义),其本身表示任意数量的任何字符。” 与文本text匹配,这将完全返回字符串:
text
expr 5 = 5
如果表达式相等,则返回1(true),否则,返回0(false)。在这里,值5和5相等,因此相等,因此输出将是:
1
expr '5' = '5'
在这里,将比较两个字符串的等效性。如果字符串完全匹配(逐字符),则结果将为1(真)。否则,结果将为0。在这里,结果是:
1
expr 5 \> 10
如果5小于10,则结果为1(真),否则为0。“小于”符号(“ < ”)前面带有反斜杠(“ \ ”),以防止其受到外壳程序的攻击,否则会将其解释为重定向操作符。在这个例子中,5是不大于10,所以输出是:
0
expr 5 \!= 5
就像=运算符测试等效性一样,!=运算符测试非等效性。如果两个测试值不相等,则结果为true(1),否则结果为false(0)。5等于5,所以结果为假:
0
expr 5 \!= "5"
“等效”与“平等”不同。5是一个数字,而“ 5”是一个字符串,因此从技术上讲它们不是“等于”,但是expr认为它们是等效的,因为它读取字符串的内容,看到它是一个数字,并使用该数字的值在比较中。因此,值5等效于包含数字“ 5”的字符串。因此,这里的答案是错误的。它们不是 非等效的:
0
下一个示例将通过一系列命令展示如何使用expr来递增变量的值。
如果我们定义一个名为count的变量,则将其设置为零:
count=0
...我们可以使用echo命令输出该变量的值:
echo $count
0
...现在我们可以通过将其设置为expr评估的值来增加它,该评估返回变量的值加一个:
count=`expr $count + 1`
...然后我们可以使用另一个回显检查更新后的值:
echo $count
1
查看英文版