使用命令行开关进行 Bash 通配符扩展

使用命令行开关进行 Bash 通配符扩展

我正在使用一个接受表单输入的命令

command [-a input_files]*

所以我可以打电话command -a foocommand -a foo -a bar -a baz.

现在,我正在尝试自动化工作流程,并希望将目录中的所有文件传递给命令。有没有办法获得通配符来做到这一点?我知道,*但这不允许我插入强制-a前缀:command *只会执行command foo bar baz

这样的操作可能是 bash 本身的,还是需要使用 sed 等?

答案1

也许最短的方法是使用 printf:

lcov $(printf -- ' -a %s' *)

但某些程序仍然可能会失败,请测试并报告。

答案2

构建一个在每个 ( ) 文件之前的数组,然后args使用整个列表运行:-a*command

for f in *
do
  args+=(-a "$f")
done
command "${args[@]}"

相关内容