同时在多个文件上运行相同的shell脚本

时间:2015-07-02 13:29:55

标签: bash shell unix

我有一个像这样的shell脚本:

while read line
do
    a=`echo $line`

    while read line
    do
        <complex stuff>
    done < $a.txt
done < b.txt

其中b.txt包含文件名列表,作为第一个while循环的输入。

第二个while循环应该将b.txt中具有相同名称的文件作为输入并对其执行一些计算。

脚本工作正常,但问题是第二个while循环过程必须同时对b.txt中提到的所有文件执行,以节省完成完整任务所需的时间。

但是上面的脚本将从b.txt逐个获取文件名,并完成需要很长时间的任务。

是否可以通过同时并行执行b.txt中所有文件的第二个while循环来修改此脚本?

1 个答案:

答案 0 :(得分:3)

你可能能够在后台运行每个内循环(虽然如果没有看到身体就无法确定。

while IFS= read -r line
do
    while read line
    do
        <complex stuff>
    done < "$line.txt" &
    #                  ^ A subshell is forked to run the loop, allowing
    #                    the outer loop to continue immediately.
done < b.txt
# Optional, but you may need to wait for all the background
# jobs to complete before proceeding
wait