перенаправить вывод в качестве ввода в командную строку? - PullRequest
0 голосов
/ 13 июня 2011

Я хочу запустить следующий код внутри bash-скрипта:

java -jar VarScan.v2.2.jar somatic < samtools view -b -u -q 1 $n_b \
| samtools pileup -f $r - < samtools view -b -u -q 1 $t_b \
| samtools pileup -f $r - output

, где $ n_b и $ t_b - файлы.

Соматическая функция java принимает 2 параметра.поэтому

samtools view -b -u -q 1 $n_b | samtools pileup -f $r

является одним из параметров, а

samtools view -b -u -q 1 $t_b | samtools pileup -f $r

- другим параметром.Оба параметра являются исполняемыми сами по себе.

Итак, я хочу

samtools view -b -u -q 1 $n_b | samtools pileup -f $r -

выполнить сначала, затем

samtools view -b -u -q 1 $t_b | samtools pileup -f $r

, и выход станет входом для соматики.

Ответы [ 3 ]

2 голосов
/ 13 июня 2011

[РЕДАКТИРОВАТЬ] Я думаю, что я понимаю ваш вопрос сейчас, пожалуйста, поправьте меня, если я ошибаюсь.

Давайте начнем с самого простого возможного примера, который имеет такое же количество различных командных строк, что и ваш пример.Представьте, что у вас есть три программы: «somatic», «samtools1» и «samtools2».Соматика принимает два аргумента, а samtools1 и samtools2 не принимают ни одного.

Давайте представим далее, что при запуске samtools1 в результате получается одно слово «output1».И аналогично, давайте представим, что когда samtools2 запущен, он выдает одно слово «output2».Затем вы хотели бы запустить команду

somatic output1 output2

в качестве командной строки.

Способ достижения этого -

somatic `samtools1` `samtools2`

Перенаправление не включено.

Или более подробно, используя ваш оригинальный пример, что-то вроде

java -jar VarScan.v2.2.jar somatic `samtools view -b -u -q 1 $n_b | samtools pileup -f $r -` `samtools view -b -u -q 1 $t_b | samtools pileup -f $r - output`

Хотя между `и | может быть некоторое взаимодействиеэто требует некоторых скобок или цитирования.На самом деле я не пытался запустить это.

[Старый материал оставлен для одитинга]

Ваш вопрос мне не совсем понятен: вы ясно думаете, хотите ли вы перенаправить выводили сформулировать командную строку?Я подозреваю, что вы имеете в виду последнее, так как вы говорите о двух параметрах, и есть только один стандартный ввод.

Если вы хотите сформулировать параметр командной строки из выходных данных команды, синтаксис bash для использования будетобратные кавычки '`'

Например, чтобы запустить команду 'mycommand', которая ожидает дату в качестве своей командной строки argumemt, вы можете использовать

mycommand `date`

, которая будет запускать команду даты, ииспользуйте вывод команды в качестве первого аргумента mycommand.

0 голосов
/ 12 июля 2011

Решение моего вопроса найдено по адресу:

https://gist.github.com/1022747

0 голосов
/ 13 июня 2011

Вероятно, не ответ, потому что мне не хватало понимания вопроса:

Я бы использовал

(представление samtools -b -u -q 1 $ n_b | samtools pileup -f $ r -; \ samtools view -b -u -q 1 $ t_b | samtools pileup -f $ r -) \ | java -jar VarScan.v2.2.jar соматический вывод

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...