我正在尝试创建一个bash
,它将使用存储在单独驱动器上的所有bam文件(/ media / cmccabe / C2F8EFBFF8EFAFB9 / pool_I_090215),在我已将目录更改为的程序中运行它们,并将输出重定向到(/ home / cmccabe / Desktop / NGS / pool_I_090215)。我不确定下面是否接近,但希望它是一个开始。谢谢:))
cmccabe@HPZ640:~/Desktop/NGS$ for f in /media/cmccabe/C2F8EFBFF8EFAFB9/pool_I_090215/*.bam do bname=`basename $f` pref=${bname%%.bam} samtools view -H $f | sed '/^@PG/d' | samtools reheader - $f > /home/cmccabe/Desktop/NGS/pool_I_090215/${prefix}_newheader.bam done
bash: syntax error near unexpected token `|'
答案 0 :(得分:4)
for循环的语法要求do
前面加一个换行符或分号:
for f in /media/cmccabe/C2F8EFBFF8EFAFB9/pool_I_090215/*.bam ; do
bname=`basename $f`
pref=${bname%%.bam}
samtools view -H $f | sed '/^@PG/d' | samtools reheader - $f > /home/cmccabe/Desktop/NGS/pool_I_090215/${prefix}_newheader.bam
done
另请注意,$pref
和$prefix
是不同的变量。如果路径可能包含奇怪的字符,则双引号变量会更安全。