我正在尝试编写一个 Ruby 脚本,该脚本进入目录中的每个子目录,然后执行多个命令。我正在使用 System() 命令来执行其中一些。根据文档,我认为 System() 应该等待子进程结束然后再继续。然而,它似乎并没有这样做。这是我的脚本的简化版本:
Dir.glob("**/") do |subdir|
Dir.chdir(subdir) do
system("gunzip *paired.fastq.gz")
end
end
我希望它对第一个子目录中的一个或所有适当的文件运行gunzip,一旦这些gunzip进程结束,然后转到下一个子目录,依此类推。但现在,它只是同时为所有子目录中的文件创建gunzip 进程。我是否误解了 System() 文档?我应该使用其他命令吗?
谢谢!!!
您可以在运行命令的末尾添加
wait
,在您的情况下,它看起来像这样:
system("gunzip *paired.fastq.gz; wait")