xargs -I 参数的确切格式?

xargs -I 参数的确切格式?

事实上,我想知道“-I”参数的确切格式(字符串、变体等)

对于这样的脚本,

seq 15 | xargs -I num

seq 15 | xargs -I num bash -c "echo num"

将工作

这里的“num”我认为是 bash -c "" 中执行脚本的参数,但我不确定将 num 引入 bash 时的格式

尝试

seq 15 | xargs -I num bash -c "name=num; echo name"

失败时将其视为字符串。

尝试

seq 15 | xargs -I num bash -c "name=num; echo $name"

也没用。

我只是想尝试多线程来--max-procs限制线程数量,虽然我不太确定这个问题,但我猜可能是关于“=”的事情。我怎样才能让它按我想要的方式工作。

答案1

num只是被 seq 输出的每个数字字符串所替换。

您尝试分配到name正确的位置但显示您已转义$

seq 15 | xargs -I num bash -c "name=num; echo \$name"

如果你会尝试:

name=hallo; seq 15 | xargs -I num bash -c "name=num; echo $name"

你可能会注意到。

答案2

安东已经解释了你的错误。我想补充一点,对于这种bash -c ''情况有一个更好的解决方案:

seq 15 | xargs -L 1 bash -c 'name=$1; echo $name' foo

这更好,因为它更灵活。您可以传递多个参数(可能对seq输入没有用)。

相关内容