コマンドラインで動作しますが、シェルスクリプトでは機能しません
質問
この線を持っています
samtools view -h file | awk '$3=="chr$a" || /^@/' | samtools view -S - -b -o output
.
-Sと-Bの間のダッシュは、STDINからのものであることをプログラムに示すと想定されています。コマンドラインのPerlスクリプトから実行できますが、シェルスクリプトに移動しようとするとすぐにデータを出力せずにファイルを作成します。どんなアイデアも大いに感謝されるでしょう。
解決
In a shell script the $a inside single quotes will not be expanded:
for a in {1..22} do
samtools view -h AD3.sorted.bam | awk '$3=="chr$a" || /^@/' | samtools view -S - -b -o chr$a.bam
done
他のヒント
If you haven't already, have a look at the samtools FAQ. This has examples for doing similar things to what you want to do with your pipeline.
Its been a while since I used samtools, but I would've written your command like this:
samtools view -h file | awk '$3=="chr$a" || /^@/' | samtools view -S -b - > output.bam
Also you mentioned you had moved the command to a shell script. Is the shell script doing anything else? If it still doesn't work, I would post that for us to look at.
所属していません StackOverflow