Linux expr 命令 - 表达式求值工具
expr 命令(英文全称为 EXPRESSION)是 Linux / Unix 系统中自带的用于表达式求值的命令,它能够实现对算术运算、字符串操作、逻辑判断、正则匹配等表达式的操作,是 Shell 脚本开发和系统运维中的一款基础工具。
相似功能命令对比
如下给出几个能够进行求值工具,请认清其功能区别:
bc 命令:支持高精度浮点运算,功能更加的强大let 命令:Shell 的算术运算求值命令,不支持字符串、正则匹配等功能$(( )) 语法:Shell 内置的算术表达式求值,无字符串处理能力
expr 命令语法
expr 命令的语法形式有两种,如下给出其具体的形式:
expr EXPRESSION
expr OPTION
语法中各部分的说明:
EXPRESSION:需要求值的表达式,支持算术运算、逻辑运算、字符串操作、正则匹配等OPTION:辅助的选项,只有显示帮助、版本两个基础的选项
表达式的优先级
如下给出支持的表达式从低到高进行运算的优先级:
- 逻辑或运算:
ARG1 | ARG2 - 逻辑与运算:
ARG1 & ARG2 - 比较运算符:
<、<=、=、!=、>=、> - 算术运算符:
+、- - 算术运算符:
*、/、% - 字符串操作:
:、match、substr、index、length - 括号优先运算:
( EXPRESSION ) - 强制将关键字或运算符识别为字符串:
+ TOKEN
使用命令的注意事项说
在使用 expr 命令时,需要注意如下的事项:
- 很多的运算符(如
*、|、&、<、>)在 Shell 中属于特殊字符,需要使用\进行转义 - 当进行比较时:如果两个参数均为数字,执行算术比较;否则按字典序列比较字符串
expr 命令使用示例
如下给出的示例覆盖了大多数的 expr 命令的使用方法。
算术运算示例
如下给出整数加法、乘法、除法与取余的整合示例:
expr 10 + 20 # 加法
expr 10 \* 5 # 乘法
expr 20 / 3 # 除法
expr 20 % 3 # 取余
逻辑运算示例
如下给出逻辑或运算、与运算的使用示例:
expr "" \| "test" # 或运算
expr 10 \& 20 # 与运算
比较运算示例
比较两个数字的大小:
expr 15 \< 20
如果如上的比较表达式成立,则输出 1,否则输出 0
字符串操作示例
获取字符串长度
使用 length 表达式获取字符串的长度:
expr length "hello linux"
截取子字符串
使用 substr 表达式并指定起始下标和截取的长度,截取对应的字串:
expr substr "linux expr" 2 4
从第2位开始截取4个字符,输出内容为 inux
字符串正则匹配
使用 : 表达式指定正则表达式,来提取指定的信息:
expr "linux123" : "linux\([0-9]*\)"
如果匹配组 () 能够匹配到信息,则会提取相应的信息。
查找字符位置
使用 index 表达式查找字符在字符串中第一次出现的位置:
expr index "apple" "p"
如果输出 0 表示不存在。
强制将关键字作为字符串
使用 + 强制将关键字 match 识别为普通字符串:
expr + "match" : "match"
expr 命令选项
expr 命令只有两个选项,以下为选项的解释说明:
| 选项 功能说明 | | ------------- | ------------------------ | | --help | 显示命令的帮助文档后退出 | | --version | 输出命令的版本信息后退出 |
退出状态码
expr 执行后会返回一个退出状态码,可用于在 Shell 脚本中判断其执行的状态:
0:表达式的结果非空且非01:表达式的结果为空或02:表达式的语法无效;3:命令执行的过程中发生错误
结语
expr 命令是 Linux / Unix 系统中的一款基础表达式工具,它具有轻量、不依赖其他工具的特点,能够完成基础算术运算,还能实现字符串处理、正则匹配等复杂操作,是一款非常好用的工具,学习完本文的内容后,你一定能掌握 expr 命令的使用方法。
但在使用中需要注意一些运算符需要转义和表达式的语法规范。