Bash 扩展的 globbing 括号中断数组初始化
Bash extended globbing brackets break array initalization
我使用语句 echo *([!min]).css
获取当前目录中扩展名为 .css 的所有文件名,但带有 [=23 的文件除外=].min.css 扩展名。在 bash.
上有效
但是,当我使用它在 bash 脚本中初始化数组时
files=(*([!min]).css)
它不再起作用了。 Bash 表示某处出现意外的左括号。我的编辑器的语法突出显示也看起来像数组初始化中的 glob 的括号不正确,但是我没能正确。
有什么建议吗?谢谢
编辑: 我在 ArchLinux 上使用 GNU Bash 4.3.033。
要使用 extended globs,您必须启用 extglob shell 选项。把它放在脚本的开头,就在 shebang 的下面:
#!/usr/bin/env bash
shopt -s extglob
#...
files=( !(*.min).css )
#...
请注意,shell 选项不会被继承,因此即使您可能在交互式 bash 脚本中启用了 extglob,您 运行 来自的脚本,您仍然必须明确启用它在脚本中。
我使用语句 echo *([!min]).css
获取当前目录中扩展名为 .css 的所有文件名,但带有 [=23 的文件除外=].min.css 扩展名。在 bash.
但是,当我使用它在 bash 脚本中初始化数组时
files=(*([!min]).css)
它不再起作用了。 Bash 表示某处出现意外的左括号。我的编辑器的语法突出显示也看起来像数组初始化中的 glob 的括号不正确,但是我没能正确。
有什么建议吗?谢谢
编辑: 我在 ArchLinux 上使用 GNU Bash 4.3.033。
要使用 extended globs,您必须启用 extglob shell 选项。把它放在脚本的开头,就在 shebang 的下面:
#!/usr/bin/env bash
shopt -s extglob
#...
files=( !(*.min).css )
#...
请注意,shell 选项不会被继承,因此即使您可能在交互式 bash 脚本中启用了 extglob,您 运行 来自的脚本,您仍然必须明确启用它在脚本中。