2

ここでの初心者は、bashでパイプラインを機能させようとしています。私が以下を実行したときに誰かが理由を理解できれば、私は次のようになります。

-bash: `$i': not a valid identifier,

それは本当に役に立ちます。また、他に間違いがある場合はお知らせください

for $i in /home/regionstextfile; do tabix /sequences/human_variation/snps/genotypes.vcf.gz $i | vcftools --window-pi 10000 >> /home/Testgenomesdata/genomesregions.txt; done

アイデアは、regionstextfile(ゲノム座標を含む)の各行に対して、ファイルで呼び出さtabixれたプログラムを実行し、次に指定されたオプションで出力を実行し、すべての出力をファイルに入れることです。vcf.bzvcftoolsgenomesregions.txt

4

2 に答える 2

8

そうでなければなりません:

for i in `</home/regionstextfile`
do 
  tabix /sequences/human_variation/snps/genotypes.vcf.gz $i | vcftools --window-pi 10000 >> /home/Testgenomesdata/genomesregions.txt
done

変数を使用する場合(たとえば、変数に値を割り当てるか、エクスポートするか、変数自体を使用する以外のことを行う場合)、;なしで名前を記述します$。変数の値を使用する場合は、を記述し$ます。

編集:

リージョン名にスペースが含まれているが、各リージョンが別々の行にある場合は、次のものが必要ですwhile

cat /home/regionstextfile | while read i
do 
  tabix /sequences/human_variation/snps/genotypes.vcf.gz "$i" | vcftools --window-pi 10000 >> /home/Testgenomesdata/genomesregions.txt
done
于 2012-06-19T07:37:55.643 に答える
1

猫がいなくても同じこと:

while read i
do
  tabix /sequences/human_variation/snps/genotypes.vcf.gz "$i" | vcftools --window-pi 10000 >> /home/Testgenomesdata/genomesregions.txt
done < /home/regionstextfile

<file.txtIFS =''でない限り、発言は機能しませんでした。

OLDIFS="$IFS"
IFS=''
for i in `</home/regionstextfile`
do
  tabix /sequences/human_variation/snps/genotypes.vcf.gz $i | vcftools --window-pi 10000 >> /home/Testgenomesdata/genomesregions.txt
done
IFS="$OLDIFS"
于 2012-06-19T09:49:01.373 に答える