gpt4 book ai didi

使用 & 和等待在后台 bash 不同的循环

转载 作者:行者123 更新时间:2023-11-29 09:15:21 27 4
gpt4 key购买 nike

我查看了相关主题,但没有找到答案。

这是我的问题:

我试图将这些我通常不在 for 循环中运行的命令放入两个单独的 for 循环中

原始命令:

command1 &
command2 &

wait

command 3

这显然在后台启动了两个命令,并且在两个命令完成后,它启动了命令 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 时,即使我放置“等待”,我也可以从命令 1 或命令 2 中找到一些工作。

我已经尝试了不同的选项,例如第二个没有 & 的“完成”。我也试过两次等待……但我所做的一切……我把所有的工作都搞砸了:(

我的错误在哪里(请...有礼貌 :P)?

谢谢

法比奥

最佳答案

保存两个“for”循环,但从中删除所有“&”,作为单独的文件:loop1、loop2。 chmod a+rx loop1 loop2;并执行:

loop1 &
loop2 &
wait
command3

我不知道“done &”的行为,最好不要使用它。
您的代码同时执行所有内容。我假设您需要 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

关于使用 & 和等待在后台 bash 不同的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15139565/

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