带有多个命令的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

【讨论】:

也许作为点睛之笔,您的私有变量更喜欢小写。 可能想要重定向循环中的命令&lt;/dev/null,如果我们不知道它们不消耗标准输入,只是出于谨慎。或者将 file.txt 放在备用 fd 上。 如果其中一个脚本在输出中添加了扩展名,例如 SRR13143.sra.gz,我可以写:“$FILE”.gz 吗??

以上是关于带有多个命令的for循环[重复]的主要内容,如果未能解决你的问题,请参考以下文章

带有变量组合的SCSS中的for循环[重复]

带有参数化游标的嵌套 for 循环正在插入重复记录

在带有pdf输出的r markdown中的for循环中包含多个空行

Shell脚本 for循环 while循环 case分支语句

终端命令:带有回声的 For 循环

使用带有 JavaScript 的 for 循环时,将新列表项添加到 <ul> 项 [重复]