您可以在不使用双括号的情况下测试正则表达式匹配吗?

您可以在不使用双括号的情况下测试正则表达式匹配吗?

据我了解(请随意纠正我,我是 shell 脚本编写的新手),括号[是一个 Unix 命令,也是test命令的替代命令,它允许您测试条件(0如果条件是true则返回,1否则返回)

双括号[[是一个关键字,它允许您进行更复杂的条件评估。例如,针对正则表达式的测试。

如果我理解正确,双括号[[可能会存在可移植性问题,具体取决于执行脚本的 shell(例如,Bourne shell 不支持)。

因此提出一个问题。如果我想测试正则表达式的变量,是否可以使用命令test(或单括号[命令)来执行?

答案1

传统上test [有不同的名称(硬链接)[程序,除了需要尾随];之外,在这两种情况下都执行完全相同的操作。今天,它们通常是 shell 内置函数,除了].该程序或那些内置程序不执行正则表达式。

测试正则表达式的 POSIX(和传统)方法是expr grep sed awk.第一个只做一些事情,包括正则表达式,与test/[and非常相似[[。第二个核心只执行正则表达式,但有很多周围的选项。最后两个做了很多事情包括regexp,但如果这就是你想要的,你只能这样做。另一种常见但非 POSIX 方法是perl.

相关内容