回显列表/数组到 xargs

Ale*_*lls 4 bash xargs echo for

假设我有一个列表/数组:

list=(a b c)
Run Code Online (Sandbox Code Playgroud)

如何将每个元素回显到 xargs?就像是:

for v in list; do echo v; done; | xargs
Run Code Online (Sandbox Code Playgroud)

有没有更简洁的方法?

Kus*_*nda 8

printf '%s\n' "${list[@]}" | xargs
Run Code Online (Sandbox Code Playgroud)

这会将 的每个元素打印list在自己的行上,并且以换行符分隔的列表将传递给xargs

"${list[@]}"将扩展到list. printf如果给定的参数多于格式化字符串中的占位符,则将重用其格式化字符串。

  • 更好的是,使用: `printf '%s\0' "${list[@]}" | xargs -0` (3认同)