【发布时间】:2025-11-25 22:35:01
【问题描述】:
是否可以将带有空格的字符串传递给 xargs 并使用每个 word 作为参数?
例如,我正在尝试这样的事情。但是这两个词都被视为一个参数。
echo foo bar | xargs -I {} sh -c 'echo item: {}'
我想使用 shell 而不是 bash。否则,我认为数组可能会有所帮助,但它们在 shell 中不存在。
【问题讨论】:
是否可以将带有空格的字符串传递给 xargs 并使用每个 word 作为参数?
例如,我正在尝试这样的事情。但是这两个词都被视为一个参数。
echo foo bar | xargs -I {} sh -c 'echo item: {}'
我想使用 shell 而不是 bash。否则,我认为数组可能会有所帮助,但它们在 shell 中不存在。
【问题讨论】:
您可以使用-d 选项来指定分隔符:
echo 'foo bar' | xargs -I {} -d ' ' sh -c 'echo item: {}'
将导致:
item: foo
item: bar
--delimiter=delim, -d delim
输入项以指定字符结束。指定的分隔符可以是单个字符、C 样式的字符转义(例如 \n)或八进制或十六进制转义码。八进制和 十六进制转义码被理解为 printf 命令。不支持多字节字符。在处理输入时,引号和反斜杠并不特殊;中的每个字符 输入是从字面上理解的。 -d 选项禁用任何文件结尾字符串,它被视为任何其他参数。当输入仅由换行符分隔的项目组成时,您可以使用此选项, 尽管在可能的情况下将程序设计为使用 --null 几乎总是更好。
【讨论】:
--delimiter=delim, -d delim ...