gpt4 book ai didi

bash - xargs 输入算术?

转载 作者:行者123 更新时间:2023-11-29 09:42:17 26 4
gpt4 key购买 nike

我有一个 xargs 命令:

xargs -a es_doc_positions.txt -P 64 -I {} populate_es_index.py --start {} --end {}

是否可以获取输入 {} 并对其应用简单的算法?我想提供类似这样的结束参数:

$(({} + 100000 - 1))

到目前为止,我尝试过的方法都没有成功。

最佳答案

xargs除非您告诉它,否则不会调用 shell。因此,它无法自行执行 shell 运算。

告诉xargs调用 shell,并在该 shell 中执行算术运算:

xargs -a es_doc_positions.txt -P 64 -n 16 sh -c '
for arg do
./populate_es_index.py --start "$arg" --end "$(( arg + 100000 - 1 ))"
done
' _

结尾的下划线是 $0 的占位符, 所以值通过 xargs进入 shell 被分配给 $1及以后。

-n参数控制每个 sh 有多少实例调用运行。当您接近输入批处理的末尾时(当少于 P*n 个值仍有待处理时),较低的值将导致较少的未使用 CPU 周期;较高的值将减少启动 shell 实例时的 CPU 开销。

请注意,此解决方案不使用 -I 是有意为之的。 .如果你想修改它这样做,你想把占位符作为最后一个参数,在 _ 之后,作为代码中的子字符串;使用占位符作为子字符串会引入 shell 注入(inject)漏洞,并且还会阻止单个 shell 实例处理多个输入。

关于bash - xargs 输入算术?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46575351/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com