bash:使用文件列表限制for循环中的子shell
本站教程收集整理的这篇文章主要介绍了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》来自互联网同行内容,若有侵权,请联系我们删除!
相关文章
发表评论
评论列表
- 这篇文章还没有收到评论,赶紧来抢沙发吧~