加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用&等待背景中的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

我不知道“完成和放大”的行为,最好不要使用它.
您的代码同时执行所有操作.我想你想要2个主题.

编辑:单脚本解决方案:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读