我想知道是否可以编写一个符合 POSIX 的find
脚本,根据其参数构建命令。
另一篇 SE文章解释了如何对 Bash(和 zsh)执行此操作,但它使用了特定于 bash(或 zsh)的工具。
最初的问题是能够构建这样的查找命令:
find -iname '*foo*' -o -iname '*bar*' -o -iname '*blah*'
答案是以下 Bash 脚本代码:
findany() {
local args=('-iname' "*$1*")
shift
while [ "$#" -gt 0 ]; do
args+=('-o' '-iname' "*$1*")
shift
done
find . "${args[@]}"
}
是否可以在符合 POSIX 的脚本中执行类似操作?
POSIX shell 中只有一个数组 - 参数数组。您可以在这里使用它:
这在 bash 或 zsh 中也应该可以正常工作。