【发布时间】:2019-01-15 02:58:59
【问题描述】:
我正在尝试通过xargs 传递值列表。这是一个简单的例子:
echo "Hello Hola Bonjour" | xargs -I _ echo _ Landon
我希望这会输出以下内容:
Hello Landon
Hola Landon
Bonjour Landon
相反,命令输出如下:
Hello Hola Bonjour Landon
我错过了什么?
【问题讨论】:
-
echo "Hello Hola Bonjour" | xargs printf '%s Landon\n'不会有这个问题(因为printf在看到额外参数时会重用其格式字符串,printf '%s Landon\n' Hello Hola Bonjour将打印您期望的三行)。一般来说,最好避免使用xargs -I;当应用于常见用例(例如替换为sh -c '...'字符串)时,它存在严重的(安全)问题。