使用&等待背景中的bash不同循环
发布时间:2020-12-16 01:57:40 所属栏目:安全 来源:网络整理
导读:我已经看了相关的主题,但我没有找到答案. 这是我的问题: 我试图将我通常在for循环中运行的这些命令放入两个单独的for循环中 原始命令: command1 command2 waitcommand 3 这显然在后台启动了两个命令,在BOTH完成后,它启动命令3 现在这里是我的for循环脚本:
我已经看了相关的主题,但我没有找到答案.
这是我的问题: 我试图将我通常在for循环中运行的这些命令放入两个单独的for循环中 原始命令: command1 & command2 & wait command 3 这显然在后台启动了两个命令,在BOTH完成后,它启动命令3 现在这里是我的for循环脚本: file1=directory1/*.txt for i in $file1; do command1 ${i} > ${i}.test & # I know,it will generate files like ".txt.test". It's ok. done & file2=directory2/*.txt for i2 in $file2; do command1 ${i2} > ${i2}.test & done & wait command3 现在我的脚本有一些错误,因为有时在执行命令时3我可以从command1或command2找到一些作业,如果我放“等待”. 我尝试过不同的选项,比如没有&的第二个“完成”.我也尝试了两次等待……但是我做的一切……我搞砸了所有的工作:( 我的错误在哪里(请…礼貌:P)? 谢谢 法比奥 解决方法
保存两个“for”循环,但删除所有“&”从它们,作为单独的文件:loop1,loop2. chmod一个rx loop1 loop2;并执行:
loop1 & loop2 & wait command3 我不知道“完成和放大”的行为,最好不要使用它. 编辑:单脚本解决方案: script1=`mktemp /tmp/.script.XXXXXX`; cat >$script1 <<END for i in directory1/*.txt; do command1 ${i} > ${i}.test; done END script2=`mktemp /tmp/.script.XXXXXX`; cat >$script2 <<END for i in directory2/*.txt; do command1 ${i} > ${i}.test; done END chmod u+rx $script1 $script2 $script1 & $script2 & wait; command3 /bin/rm $script1 $script2 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |