检查写入的文本文件是否已完成

时间:2016-02-15 20:02:35

标签: bash shell

我的脚本有两个部分。首先,它将执行一个2 java类并将输出写入2个不同的文本文件,每个文件的输出很大(10000行)。第二,执行此命令后,它将同时开始同时读取这两个文件并进行处理。

    java -cp ./weka.jar weka.classifiers.functions.SMO  -t /Users/mainulquraishi/Documents/sentiment_directory/2014/Books/training/representation${i}_by_${i}.arff -no-cv -T /Users/mainulquraishi/Documents/sentiment_directory/2014/Books/representations/representation2014_by_${i}.arff  -v -o >>test1.txt 

   java -cp ./weka.jar weka.classifiers.functions.SMO  -t /Users/mainulquraishi/Documents/sentiment_directory/2014/Books/training/representation${i}_by_${i}.arff -no-cv -T /Users/mainulquraishi/Documents/sentiment_directory/2014/Books/representations/representation2014_by_${i}.arff  -v -o >>test2.txt    

            while read compareFile1 <&3 && read compareFile2 <&4; do
              #Here the processing goes 
            done 3<test1.txt 4<test2.txt

现在,我的问题是,是否有可能在完成两个文件的写入之前,程序的第二部分可能会启动(两个部分都在同一个程序文件中)?  如果答案是肯定的,我怎么能向我的程序发出信号,表明两个文件的写入都已完成?或任何其他技术高度赞赏。

1 个答案:

答案 0 :(得分:1)

您可以使用流程替换,这是一个简化示例:

while read -d" " v1 <&3 && read -d" " v2 <&4; do
   echo "v1:$v1 v2:$v2";
done 3< <(echo "1 2 3 ") 4< <(echo "9 8 7 ")

使用输出生成命令...

,而不是<(后面的echo命令

请注意,要读取的-d" "参数只需要将读取空间分隔为单词而不是行 - 只是为了使示例保持较小。

相关问题