2013-07-30 95 views
0

因此,以前我有一个脚本从文本文件中读取(100亿* 40条记录和一个相当宽的表)。但我注意到CentOS 5.4中的Read Builtin存在内存泄漏现在我无法升级我的操作系统,因此我想我是否可以读取一些记录,在当前脚本中运行相同的脚本,然后终止当前脚本。 我有一个文件“test.txt”,其中包含1-100000,每个数字一行。我想从这个文件中读取10000个文件,直到我把这个文件中的所有内容都传送到另一个文件“callSelf.txt”。奇怪的是,我可以将所有内容都记录到90000条记录中,但在此之后,脚本停止并且不会完成剩余的10000条记录。 注意:我正在使用命名管道进行此过程。bash脚本spwans本身并退出

有没有人知道这里发生了什么? 在此先感谢。

PIPE="./pipe" 
callSelf="./callSelf.txt" 
counter=1 
limit=9999 

echo $$ 

while read LINE 
do 
    if [ $counter -gt $limit ]; then 
    echo "$LINE" >> $callSelf 
    ./callSelf.sh & 
    exit 0 
    fi 
    ((counter++)) 
    echo "$LINE" >> $callSelf 
done <$PIPE 

回答

0

不知道这是否会帮助,但,这是你的脚本的重奏

while read 
do 
    echo $REPLY >> ./call_self.txt 
    if ((++counter > 9999)) 
    then 
    ./call_self.sh & 
    exit 
    fi 
done < ./pipe