0

我对生物信息学比较陌生,但我会尽力学习。我遇到了一个问题,我希望有人知道该怎么做,并向我解释用于多个文件的 bash 工具实际上是如何工作的。

我有一个包含 160 个 RNAseq 库的文件夹,解压后看起来像name.fastq. 我想同时cutadapt在所有这些上运行(一个将从我的库中删除所有适配器序列的软件);因此,对于一个库,命令如下所示:

python2.6 /imports/home/w/workshop/oibc2013/oibc1/Apps/cutadapt-1.2.1/bin/cutadapt -a name_adapter input_file.fastq > out

所以我尝试制作一个 bash 数组循环,以便能够对我拥有的所有 160 个文件执行此操作,但它仍然无法正常工作。

!/bin/bash

. $HOME/.bashrc
my_array=(*.fastq)
echo ${myarray["SGE_TASK_ID"-1]}
python2.6 \
  /imports/home/w/workshop/oibc2013/oibc1/Apps/cutadapt-1.2.1/bin/cutadapt \
  -a CTGTCTCTTATACACATCT \
  -b AATTGCAGTGGTATCAACGCAGAGCGGCCGC \
  -b GCGGCCGCTCTGCGTTGATACCACTGCAATT \
  -b AAGCAGTGGTATCAACGCAGAGTACATGGG \
  -b CCCATGTACTCTGCGTTGATACCACTGCTT \
  inputs.$SGE_TASK_ID \
  results.$SGE_TASK_ID]}
4

1 回答 1

2

而不是一个数组,你只需要一个循环。在这种情况下,由于您匹配的是 glob 模式 ( *.fastq),for ... in因此循环是有意义的。

一般语法是for variable_name in list_of_words; do something_with $variable_name; done;. 在你的情况下:

#!/bin/bash
. $HOME/.bashrc

path=/imports/home/w/workshop/oibc2013/oibc1/Apps/cutadapt-1.2.1/bin
for file in *.fastq
do
     python2.6 "$path"/cutadapt -a name_adapter "$file" > "$file.out"
done
于 2013-05-31T01:01:23.650 回答