如何使用 `xargs` 忽略标准输入?
How do I ignore stdin with `xargs`?
我正在使用 xargs
+ seq
到 运行 并行命令数千次。
例如运行使用 20 个并行进程宁 curl
10,000 次:
seq 1 10000 | xargs -n1 -P20 curl "https://www.example.com/foo"
但是 xargs
将 stdin
的输出附加到它 运行 的命令中(这是默认设计的)。所以它最终有效地 运行ning:
curl "https://www.example.com/foo" 1
curl "https://www.example.com/foo" 2
curl "https://www.example.com/foo" 3
curl "https://www.example.com/foo" 4
...
这导致我的 curl
命令出错。
如何让xargs
“忽略”这里的stdin
值而只输出null/empty值?
我尝试了一个 for
循环,但这并没有 运行 并行语句,这是我需要的。
我还尝试将 seq
格式化为空字符串 (seq -f'' 1 10000
),它可以正确输出 10,000 个空白行,但是 xargs
会忽略此空白输入并且从不 运行s任何命令。
谢谢!
您最好 运行 以下内容。这只会将网址重定向回 xargs 1000 次。
for i in $(seq 1000)
do echo "https://www.example.com/foo" | xargs -n1 -P20 curl
done
或作为 one-liner:
for i in $(seq 1000);do echo "https://www.example.com/foo" | xargs -n1 -P20 curl;done
使用 xargs -I {}
您可以将标准输入与另一个 {}
放在您想要的位置。如果您没有将它放在命令中,标准输入将被忽略。
我正在使用 xargs
+ seq
到 运行 并行命令数千次。
例如运行使用 20 个并行进程宁 curl
10,000 次:
seq 1 10000 | xargs -n1 -P20 curl "https://www.example.com/foo"
但是 xargs
将 stdin
的输出附加到它 运行 的命令中(这是默认设计的)。所以它最终有效地 运行ning:
curl "https://www.example.com/foo" 1
curl "https://www.example.com/foo" 2
curl "https://www.example.com/foo" 3
curl "https://www.example.com/foo" 4
...
这导致我的 curl
命令出错。
如何让xargs
“忽略”这里的stdin
值而只输出null/empty值?
我尝试了一个 for
循环,但这并没有 运行 并行语句,这是我需要的。
我还尝试将 seq
格式化为空字符串 (seq -f'' 1 10000
),它可以正确输出 10,000 个空白行,但是 xargs
会忽略此空白输入并且从不 运行s任何命令。
谢谢!
您最好 运行 以下内容。这只会将网址重定向回 xargs 1000 次。
for i in $(seq 1000)
do echo "https://www.example.com/foo" | xargs -n1 -P20 curl
done
或作为 one-liner:
for i in $(seq 1000);do echo "https://www.example.com/foo" | xargs -n1 -P20 curl;done
使用 xargs -I {}
您可以将标准输入与另一个 {}
放在您想要的位置。如果您没有将它放在命令中,标准输入将被忽略。