将回声输出管道输入xargs

Lan*_*opp 3 bash xargs

我正试图通过管道列出值xargs.这是一个简单的例子:

echo "Hello Hola Bonjour" | xargs -I _ echo _ Landon
Run Code Online (Sandbox Code Playgroud)

我希望这会输出以下内容:

Hello Landon
Hola Landon
Bonjour Landon
Run Code Online (Sandbox Code Playgroud)

相反,该命令输出:

Hello Hola Bonjour Landon
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

cho*_*oba 6

-I,man xargs

不带引号的空格不会终止输入项; 相反,分隔符是换行符

您可以指定不同的分隔符(至少在GNU xargs中):

printf 'Hello Hola Bonjour' | xargs -d' ' -I _ echo _ Landon
Run Code Online (Sandbox Code Playgroud)

更便携,\0用作分隔符并-0使用它:

printf '%s\0' Hello Hola Bonjour | xargs -0 -I _ echo _ Landon
Run Code Online (Sandbox Code Playgroud)