使用修改后的文件内容作为参数

pla*_*ker 3 bash xargs mercurial

在脚本中,我想清除 mercurial 存储库,但能够保留我从 $FILENAME 读取的许多(可配置)文件模式。hg 命令的语法是

hg purge --all --exclude PATTERN1 --exclude PATTERN2 ...
Run Code Online (Sandbox Code Playgroud)

因此,如果 $FILENAME 包含文件模式列表(每行一个模式),则每个模式都必须在前面加上“--exclude”以构建命令行

我目前的方法是用于构造参数列表
grep -v -E "^[[:blank:]]*$" $FILENAME | sed "s/^/--exclude /g" | xargs echo
,它也将跳过空行和那些只包含制表符或空格的参数列表,如果用于构建上述命令行会导致错误。因此总共:

hg purge --all `grep -v -E "^[[:blank:]]*$" $FILENAME | sed "s/^/--exclude /g" | xargs echo`
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法,也许有一些我不知道的 xargs 参数?

pla*_*ker 6

似乎在 mercurial 本身中甚至有一种速记方式,利用文件列表(由 #mercurial 中的 mg 建议):
hg purge --all --exclude "listfile:$FILENAME"