带有多个命令的for循环[重复]
Posted
技术标签:
【中文标题】带有多个命令的for循环[重复]【英文标题】:for loop with multiple commands [duplicate] 【发布时间】:2019-06-24 02:42:13 【问题描述】:我在files.txt
中有多个文件名。我想在每个文件上运行三个脚本。我的建议正确吗?
文件.txt:
SRR13143.sra
SRR44234.sra
SRR23424.sra
我的尝试:
for FILE in "file.txt";
do
prefetch --max-size 300G $FILE
fastq-dump --gzip --split-3 $FILE
rm $FILE;
done
【问题讨论】:
您不是从file.txt
读取文件名,您只是在逐字逐句地遍历名称file.txt
。
顺便说一句,你应该总是引用变量,除非你有充分的理由不这样做。
【参考方案1】:
您想要一个 while
循环。
while IFS= read -r FILE; do
prefetch --max-size 300G "$FILE"
fastq-dump --gzip --split-3 "$FILE"
rm "$FILE"
done < file.txt
【讨论】:
也许作为点睛之笔,您的私有变量更喜欢小写。 可能想要重定向循环中的命令</dev/null
,如果我们不知道它们不消耗标准输入,只是出于谨慎。或者将 file.txt
放在备用 fd 上。
如果其中一个脚本在输出中添加了扩展名,例如 SRR13143.sra.gz,我可以写:“$FILE”.gz 吗??以上是关于带有多个命令的for循环[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在带有pdf输出的r markdown中的for循环中包含多个空行