我正在使用一个接受表单输入的命令
command [-a input_files]*
所以我可以打电话command -a foo
或command -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[@]}"