Для циклов в Bash

Я запускаю инструмент биоинформатики hmmer, и я хотел бы запустить его для более чем 7000 запросов тестовой последовательности . После запуска каждого из них я хотел бы сохранить вывод в текстовом файле, что он делает довольно легко.

Я пытаюсь создать цикл for в bash, который запускал бы hmmer для каждой тестовой последовательности в папке и записывал результат в собственный текстовый файл.

Как написать оператор внутри цикла for, чтобы он записывал в другой текстовый файл каждый раз при выполнении цикла?

В настоящее время мой код такой же

for i in First10/*; do

binaries/jackhmmer --tblout test[i].txt -E1 --noali $i largedatabase.fasta

done
0
20.06.2017, 23:34
2 ответа
for i in First10/*; do
     binaries/jackhmmer --tblout test$(basename $i).txt -E1 --noali $i largedatabase.fasta
done

Я не уверен в команде, которую вы выполняете в цикле. Но я думаю, что мой ответ может удовлетворить ваше требование.

Он будет создавать новый выходной файл в каждом цикле. **то есть: если у вас есть два файла с именами database1.dbи database2.dbв каталоге First10, в первом цикле будет создан вывод testdatabase1.db.txtи testdatabase2.db.txtво втором цикле.

1
28.01.2020, 02:45
 #!/bin/bash
 cd First10 
  for filename in *; do

        ../binaries/jackhmmer --tblout "${filename}.log" -E1 --noali "$filename" largedatabase.fasta 

  done
 cd $OLDPWD

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

0
28.01.2020, 02:45

Теги

Похожие вопросы