什么可以从内部阻止bash for loop?

时间:2014-02-12 03:02:30

标签: bash

我正在浏览这样的大量数据:

for id in `cat ids.list` ; do echo $id ; bin/migrate.pl --id $id ; done

我遇到一个问题,在几百美元之后,migrate.pl脚本因我的后端发生超时错误而死亡(虽然我不确定我是否相信错误消息)。

但是当migrate.pl脚本死掉时,整个bash for-loop也会停止。我希望bash继续使用下一个$ id的migrate.pl。如何为for循环杀死脚本?我觉得这很令人惊讶,而且我无法用任何其他机制重现它,我想知道它是否与我的问题有关。

1 个答案:

答案 0 :(得分:1)

这会尝试缓冲输出cat ids.list,并且可能会导致大文件溢出。你应该做一些像

这样的事情
while read -r line; do
    for id in $line; do
        echo "$id"
        bin/migrate.pl --id "$id"
    done
done < ids.list