работает в командной строке, но не в сценарии оболочки - PullRequest
0 голосов
/ 02 марта 2012

У меня есть эта строка

samtools view -h file | awk '$3=="chr$a" || /^@/' | samtools view -S - -b -o output

тире между -S и -b должна указывать программе, что она из STDIN.Я могу запустить его из сценария perl в командной строке, но как только я пытаюсь переместить его в сценарий оболочки, он просто создает файл без вывода каких-либо данных.Любые идеи будут с благодарностью.

Ответы [ 2 ]

0 голосов
/ 03 марта 2012

В сценарии оболочки внутренние одинарные кавычки $ a не будут расширены:

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 
0 голосов
/ 02 марта 2012

Если вы еще этого не сделали, загляните в samtools FAQ .Здесь приведены примеры для выполнения действий, аналогичных тому, что вы хотите сделать с вашим конвейером.

Давно я не использовал samtools, но я написал бы вашу команду так:1007 * Также вы упомянули, что перенесли команду в сценарий оболочки.Сценарий оболочки делает что-то еще?Если это все еще не работает, я бы опубликовал это для нас, чтобы посмотреть.

...