【问题标题】:Bash: Pattern Matching/Filename ExpansionBash:模式匹配/文件名扩展
【发布时间】:2012-06-14 04:18:28
【问题描述】:

所以,我目前正在学习 Bash 脚本,我对模式匹配和文件名扩展之间的区别有点困惑。

Bash Reference manual 内容如下:

分词后,除非-f' option has been set (see section 4.3.1 The Set Builtin), Bash scans each word for the characters*',?', and['。如果出现这些字符之一,则该单词被视为一个模式,并替换为按字母排序的与该模式匹配的文件名列表。

这对我来说表明以下内容可能不应该做我们想要的:

if [[ $a == [cb]at* ]] ; then ...

在这种情况下,[cb]at* 不会像上面引用的那样扩展为以 catbat 开头的文件列表,而是更像是一个非常有限的常规表达。为什么?字符 *?[ 什么时候像正则表达式一样而不是扩展到当前目录中的匹配文件?

【问题讨论】:

    标签: bash scripting expansion


    【解决方案1】:

    bash 以不同方式解释 [[ ... ]] 中的标记。这是一个功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-12
      • 2015-09-30
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多