2017-02-11 150 views
1

我有一堆.sra文件,我想使用來自SRAtools的fastq-dump轉換成.fastq格式。它們都存儲在同一個目錄中,所以我很想運行一個bash腳本來循環遍歷它們,並使用各種方法應用fastq-dump函數。但是,我無法完全理解語法。在Bash中運行文件並運行命令

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

這引發'預期的一元運算符'。我敢肯定它非常簡單,但我在Bash腳本編寫方面有點初學者,並且不太清楚語法是如何工作的。

任何人都可以給我一個關於正確語法的提示嗎?

+1

括號'[]'是測試的shell語法,它們的返回值(0表示真,非0表示假)用作邏輯值,它們是通常用於構建'if/then/else'塊,循環終止條件或使用'&&'和'||'邏輯運算符進行條件執行。當你只是想執行一個命令時,你不會將它括在括號中。 – Fred

回答

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/* 
+0

好的 - 第一種方法奏效 - 認爲最好學習如何在bash中使用循環。謝謝! – sahwahn