我正在尝试从 glob 中排除一个目录。
这适用于命令行:
$ export exclude=BigDir
$ for d in ^$exclude/ ; do echo "$d" ; done
SmallDir/
SmallerDir/
$
但在文件中它根本不起作用
#!/bin/zsh
exclude=BigDir
for d in ^$exclude/ ; do echo "$d" ; done
运行./test
或我保存它打印文字字符串
^BigDir/
如何让它在脚本文件中正确展开?
您错误地使用了?
shell使用的 glob 字符和正则表达式构造^
, $
。for
您示例中的循环无法进行正则表达式匹配以排除提供的目录,因为它仅进行路径名扩展(又名全局扩展)
除非您通过在和in 中启用扩展 glob 选项来让 shell 知道要处理^
并$
视为特殊的,否则您将无法实现您想要做的事情。extglob
bash
extendedglob
zsh
所以你可能只需要
setopt extendedglob
print -rl ^BigDir*
这意味着打印任何东西,除了匹配文件名BigDir
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句