![使用命令行开关进行 Bash 通配符扩展](https://linux22.com/image/114897/%E4%BD%BF%E7%94%A8%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%BC%80%E5%85%B3%E8%BF%9B%E8%A1%8C%20Bash%20%E9%80%9A%E9%85%8D%E7%AC%A6%E6%89%A9%E5%B1%95.png)
我正在使用一个接受表单输入的命令
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[@]}"