linux - 对 expr 用法的困惑

标签 linux bash

expr 手册页说:“模式匹配返回在 ( 和 ) 之间匹配的字符串或 null;如果没有使用 ( 和 ),它们返回匹配的字符数或 0。”

我在做

echo `expr ABCDEF : ABC`

如预期的那样给出 3

然而,这也给出了 3,为什么?

echo `expr \( ABCDEF : ABC \)`

最佳答案

那里有两种不同的括号;您使用的那些是表达式语法的一部分,而您的引用是关于模式中的正则表达式括号。

expr \( ABCDEF : ABC \) # parenthesized expression
expr ABCDEF : \(ABC\) # capturing parentheses in pattern

关于linux - 对 expr 用法的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6481764/

相关文章:

linux - 如何在 bash 中计算 arccos()?

node.js - OSX Yosemite 上的meanjs 堆栈安装 : mean: command not found

linux - 为什么 "A=3; A=4 echo $A"在 Bash 中产生 3(而不是 4)?

python - 使用python执行带变量的linux命令

linux - 如何从 shell 脚本向程序发送命令行参数和标准输入

linux - 在 bash 中对多行运行统计

c - OS X 中的 fp->_IO_write_base 和 fp->_IO_write_end

linux - 猫 |在 bash 中按名称对 csv 文件进行排序

c - 从 DNS 服务器拉取 MX 记录

linux - 在 Ubuntu 14.04 中写入嵌入式 Controller 寄存器