linux - 如何从 bash 中的嵌入式 for 循环写入多个文本文件?
问题描述
我在下面有这个使用 perl 脚本的 bash 循环。预计会为每个我想保存为单独的文本文件的每个输出一些$i
内容$f
。我在下面的代码完成了这项工作,但不是保存为 individual $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
解决方案
循环上的重定向是每个循环,而不是每个迭代。
您可以改为{ command group; }
在您想要的命令周围使用 a 并将其重定向:
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
推荐阅读
- c++ - 在 constexpr 类中使用构造函数之外的构造函数参数
- c# - justify text without custom render
- php - 具有自定义 id 类型的 Laravel 多对多工厂
- javascript - TypeError:无法读取未定义的属性“过滤器” - 数据对象
- javascript - 如何使用 dat gui for three.js 设置 autoRotate 切换
- c - 无法从键盘读取字符
- apache-spark - 逻辑计划中的星号 (*) 是什么意思
- php - 从数据库中选择默认选项
- json - 有没有办法在不为空时将不同的结构类型编组到相同的 json 字段?
- three.js - Three.js 对齐屋顶上的带状疱疹