2013-05-07 82 views
1

我的問題是我正在寫一個bash腳本。我需要爲名爲STAR的工具指定輸入文件,這是生物信息學使用的對準器。它有一個標誌--readFilesIn。在我的情況下,這需要兩組多個文件(fastq文件)逗號分隔,兩組由空格分隔;輸入的樣子:在bash腳本中指定輸入文件

STAR [OPTIONS] --readFilesIn fq_r1_1,fq_r1_2,fq_r1_3 fq_r2_1,fq_r2_2,fq_r2_3 

由於每一組的fastq文件的數量不同,名字我已經想用下面,其中$文件是包含的fastq文件的目錄中。

dir $files | cut -d " " -f 9 | sed 's/\s *//g' | grep _r1_ | paste -sd "," 

這產生了正確的格式,但對齊器不接受輸入。我已經嘗試寫入文件並將其提供,但這也不起作用。這種情況下bash的約定是什麼?

提前許多感謝,

布魯斯。

我該如何讓對齊器接受這個。它就像我的第一個例子一樣。

+0

你試過了:'STAR [OPTIONS] --readFilesIn fq_r1 * fq_r2 *' – skip 2013-05-07 18:29:01

+0

試過了通配符,它​​給出了分段錯誤,大概是輸入格式錯了。下面的工作,無論如何感謝您的幫助,真的很感激它。 – bruce01 2013-05-08 11:40:23

回答

3

請問以下工作?

group1=(fq_r1_*) 
group2=(fq_r2_*) 
(IFS=,; STAR [OPTIONS] --readFilesIn "${group1[*]}" "${group2[*]}") 

(子外殼內運行的命令,以避免需要保存的當前值,如果有的話,的IFS)。

+0

這個效果很好,非常感謝您的幫助! – bruce01 2013-05-08 11:39:08