如何在bash中从嵌入式for循环写入多个文本文件?

时间:2018-07-27 23:57:55

标签: linux bash loops unix

我有一个bash循环,下面使用perl脚本。希望为每个要保存为单独文本文件的$i中的每个$f输出一些内容。我下面的代码可以完成这项工作,但不是将其保存为单个$i,而是将其保存为$f并将18 to 24的输出放入一个文件中。可能是我必须在此循环中重新放置写命令,还是有更好的方法呢?

for f in *.fastq; do 
echo "Processing: " $f
for i in $(seq 18 24); do
echo "Doing: " $i
perl /home/owner/perl/count.pl $f $i
done > >(tee /media/owner/${f}_${i}.txt) 2>&1
done

1 个答案:

答案 0 :(得分:1)

循环重定向是按循环而不是按迭代进行的。

您可以改为在所需的命令周围使用{ command group; }并将其重定向:

for f in *.fastq;
do 
  echo "Processing: " $f
  for i in $(seq 18 24);
  do
    {
      echo "Doing: " $i
      perl /home/owner/perl/count.pl $f $i
    } > >(tee /media/owner/${f}_${i}.txt) 2>&1
  done
done