海外主机测评

您现在的位置是:首页 > 国外服务器 > 正文

国外服务器

bash:使用文件列表限制for循环中的子shell

cds8202023-02-22国外服务器124
本站教程收集整理的这篇文章主要介绍了bash:使用文件列表限制for循环中的子shell,本站教程本站觉得挺不错的,现在分享给大家,也给大家做个参考。

本站教程收集整理的这篇文章主要介绍了bash:使用文件列表限制for循环中的子shell,本站教程本站觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直试图让for循环同时运行一堆命令,并试图通过子 sHell进行.我设法拼凑下面的脚本进行测试,它似乎工作正常.

#!/bin/bash
for i in {1..255}; do
  (
    #commands
  )&

done
wait

唯一的问题是我的实际循环将用于文件中的i *然后它只是崩溃,我假设因为它启动了太多的子sHell来处理.所以我补充道

#!/bin/bash
for i in files*; do
  (
    #commands
  )&
if (( $i % 10 == 0 )); then wait; fi
done
wait

现在失败了.有没有人知道这方面的方法?要么使用不同的命令来限制子壳的数量,要么为$i提供一个数字?

干杯

解决方法

您可以找到有用的数据来计算有工作的工作数量.例如.:

wc -w <<<$(jobs -p)

所以,你的代码看起来像这样:

#!/bin/bash
for i in files*; do
  (
    #commands
  )&
  if (( $(wc -w <<<$(jobs -p)) % 10 == 0 )); then wait; fi
done
wait

正如@chepner所说:

在bash 4.3中,您可以使用wait -n在任何作业完成后立即继续,而不是等待所有作业

本站总结

以上是本站教程为你收集整理的bash:使用文件列表限制for循环中的子shell全部内容,希望文章能够帮你解决bash:使用文件列表限制for循环中的子shell所遇到的程序开发问题。

如果觉得本站教程网站内容还不错,欢迎将本站教程推荐给好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。

《bash:使用文件列表限制for循环中的子shell》来自互联网同行内容,若有侵权,请联系我们删除!

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~