expr 命令是一个手工命令行计算器,用于在 UNIX/LINUX 下求表达式变量的值,一般用于整数值,也可用于字符串。
expr EXPRESSION expr OPTION
--help 显示帮助信息且退出
--version 显示版本信息且退出
将 EXPRESSION 的值打印到标准输出。下面使用空行将优先不同的符号进行分组,优先级别递增。EXPRESSION 取值:
ARG1 | ARG2 如果它既不是null也不是0,则为ARG1,否则为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 STRING中REGEXP的固定模式匹配
match STRING REGEXP 与 STRING : REGEXP 相同
substr STRING POS LENGTH STRING的子串,POS从1开始计算
index STRING CHARS 在STRING中找到任何CHARS的索引,或 0
length STRING STRING的长度
+ TOKEN 将TOKEN解释为一个字符串,即使它是一个像'match'这样的关键词或像'/'这样的运算符。
( EXPRESSION ) EXPRESSION 的值
请注意,许多运算符需要转义或加引号,以便用于 shell。如果两个 ARG 都是数字,则进行算术比较,否则进行字典比较。
模式匹配返回在 \(和 \) 之间匹配的字符串或空;如果没有使用 \( 和 \) ,则返回匹配的字符数或 0。
如果 EXPRESSION 既不是空也不是0,则退出状态为 0;如果EXPRESSION 为空或 0;如果 EXPRESSION 在语法上无效,则为 2;如果发生错误,则为 3。
(1)计算字串长度
hxstrive@localhost:~$ expr length "hello world" 11
(2)截取子字符串,从第 7 个字符开始,截取 5 个字符
hxstrive@localhost:~$ expr substr "hello world" 7 5 world
(3)抓取第一个字符数字串出现的位置
hxstrive@localhost:~$ expr index "hello world" w 7
(4)整数运算
hxstrive@localhost:~$ expr 14 % 9 5 hxstrive@localhost:~$ expr 10 + 10 20 hxstrive@localhost:~$ expr 30 / 3 / 2 5 # 使用乘号时,必须用反斜线屏蔽其特定含义。因为 shell 可能会误解显示星号的意义 hxstrive@localhost:~$ expr 30 * 3 expr: syntax error: unexpected argument ‘demo’ hxstrive@localhost:~$ expr 30 \* 3 90
更多关于命令详细参考手册,请使用 man 命令或者 --help 参数获取帮助信息