据我了解(请随意纠正我,我是 shell 脚本编写的新手),括号[
是一个 Unix 命令,也是test
命令的替代命令,它允许您测试条件(0
如果条件是true
则返回,1
否则返回)
双括号[[
是一个关键字,它允许您进行更复杂的条件评估。例如,针对正则表达式的测试。
如果我理解正确,双括号[[
可能会存在可移植性问题,具体取决于执行脚本的 shell(例如,Bourne shell 不支持)。
因此提出一个问题。如果我想测试正则表达式的变量,是否可以使用命令test
(或单括号[
命令)来执行?
答案1
传统上test [
有不同的名称(硬链接)一[
程序,除了需要尾随]
;之外,在这两种情况下都执行完全相同的操作。今天,它们通常是 shell 内置函数,除了]
.该程序或那些内置程序不执行正则表达式。
测试正则表达式的 POSIX(和传统)方法是expr grep sed awk
.第一个只做一些事情,包括正则表达式,与test/[
and非常相似[[
。第二个核心只执行正则表达式,但有很多周围的选项。最后两个做了很多事情包括regexp,但如果这就是你想要的,你只能这样做。另一种常见但非 POSIX 方法是perl
.