这是一个扩展问题如何检查 zsh 脚本的参数是否处于模式中
虽然上面的链接解决了 zsh 脚本检查其第一个参数以换行符分隔的文件中的模式列表的问题。我想将其扩展为:
检查可能位于文件夹数组中的多个文件夹中的多个文件中的模式。
继续跟踪匹配的模式以执行另一项任务,即:调用
.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"