在Bash和运行命令中迭代文件

时间:2017-02-11 01:59:12

标签: bash

我有一堆.sra文件,我想使用SRAtools的fastq-dump转换成.fastq格式。它们都存储在同一个目录中,因此我非常希望运行一个bash脚本来循环遍历它们并使用各种方法应用fastq-dump函数。但是,我无法正确理解语法。

#!/bin/bash
FILES=/home/sam/Documents/Reads
for file in FILES
do
[ fastq-dump "$file" ]
done

这引发了一元运算符的预期'。我确信它相当简单,但我在Bash脚本编写方面有点初学者,并且不太确定语法是如何工作的。

有人能给我一个关于正确语法的提示吗?

1 个答案:

答案 0 :(得分:3)

摆脱方括号。并将FILES更改为"$FILES"/*,以便扩展变量值并匹配该目录中的文件。

#!/bin/bash
FILES=/home/sam/Documents/Reads
for file in "$FILES"/*
do
    fastq-dump "$file"
done

实际上,循环并不是必需的。 fastq-dump可以使用多个文件名。你可以简单地写一下:

fastq-dump /home/sam/Documents/Reads/*