根据多个文件中的模式检查 zsh 脚本的参数,并跟踪其他任务的匹配模式

根据多个文件中的模式检查 zsh 脚本的参数,并跟踪其他任务的匹配模式

这是一个扩展问题如何检查 zsh 脚本的参数是否处于模式中

虽然上面的链接解决了 zsh 脚本检查其第一个参数以换行符分隔的文件中的模式列表的问题。我想将其扩展为:

  1. 检查可能位于文件夹数组中的多个文件夹中的多个文件中的模式。

  2. 继续跟踪匹配的模式以执行另一项任务,即:调用.conf其他设置。

当我问这个问题时,我仍然处于多任务状态,稍后会更新它,如果您有解决方案,我将非常感激。

答案1

files=($^array_of_folders/**/*.pattern(.N)) # assuming pattern files
                                            # have a .pattern extension
pattern="($(cat -- $files | paste -sd '|' -))"
if [[ $1 = $~pattern ]]; then
   print -r -- "$1 matches $pattern"
fi

不过,如果您想知道哪些模式匹配,您需要:

files=($^array_of_folders/**/*.pattern(.N))
patterns=(${(f)"$(cat -- $files)"})
matching_patterns=()
for pattern ($patterns) {
   [[ $1 = $~pattern ]] && matching_patterns+=$pattern
}
print -r -- "$1 matched by $#matching_patterns patterns: $matching_patterns"

相关内容