【发布时间】:2016-06-19 03:31:42
【问题描述】:
专注于 @() 语法在此 question 中提到:
[[ $OSTYPE == *@(darwin|freebsd|solaris|cygwin|openbsd)* ]]
这个语法从何而来?为什么在这种情况下使用它?和有什么区别:
[[ $OSTYPE =~ (darwin|freebsd|solaris|cygwin|openbsd) ]]
或
[[ $OSTYPE == *(darwin|freebsd|solaris|cygwin|openbsd) ]]
这一切似乎都是等价的。
是否使用此语法代替 =~ 运算符以获得更好的正则表达式可移植性?
感谢您的澄清
【问题讨论】:
-
@Cyrus 我的问题更多的是“为什么使用这种语法”而不是“如何获得结果”。
-
谢谢@choroba。所以与
COMP_TYPE无关,也与列表完成无关...上面的示例是从 bash 完成代码中提取的,这让我感到困惑。 -
@glenn jackman 当我阅读最初的问题时,在我看来,关于全局语法、流控制和行的返回值以及后续代码的内容更为笼统。我的意图是专注于
@()语法、兴趣和效率,以对抗其他解决方案。当我写这个问题时,我在最初的问题中错过了关于extglob模式的评论和关于@()的详细信息。我应该删除这个问题吗?如果是这样,对不起失去的时间。
标签: regex bash shell scripting