次のような for ループがあります。
for inf from $filelist; do
for ((i=0; i<imax; ++i)); do
temp=`<command_1> $inf | <command_2>`
eval set -A array -- $temp
...
done
...
done
問題は、command_1
少し時間がかかり、出力が少し大きいことです (入力ファイルの大きさにもよりますが、900MB が最大です)。そこで、スクリプトを次のように変更しました。
outf="./temp"
for inf from $filelist; do
<command_1> $inf -o $outf
for ((i=0; i<imax; ++i)); do
temp=`cat $outf | <command_2>`
eval set -A array -- $temp
...
done
...
done
ディスク I/O がパフォーマンスのボトルネックでもあるためか、パフォーマンスは少し改善されましたが、思ったほどではありませんでした。
stdout
の出力をcommand_1
保存して、物理ディスク ファイルに保存せずに再利用できる方法があるかどうか知りたいですか?