Еще один вопрос, на который я не могу найти ответ, и мне кажется, что я сошел с ума.
У меня есть сценарий BASH, использующий цикл for для выполнения сложной команды (много выравниваний последовательности белка) для большого количества файлов (~ 5000). Цикл создает операторы, которые будут выполняться, если они даны по отдельности (то есть скопированы из сообщения об ошибке в командную строку), но которые возвращают «нет такого файла или каталога» внутри цикла. Сценарий ниже; на самом деле есть еще несколько аргументов, но это включает в себя некоторые представительные аргументы и аргументы файла.
#!/bin/bash</p>
<p># Pass directory with targets as FASTA sequences as argument.
# Arguments to psiblast
# Common
db=local/db/nr/nr
outfile="/mnt/scratch/psi-blast"
e=0.001
threads=8
itnum=5
pssm="/mnt/scratch/psi-blast/pssm."
pssm_txt="/mnt/scratch/psi-blast/pssm."
pseudo=0
pwa_inclusion=0.002</p>
<p>for i in ${1}/*
do
filename=$(basename $i)
"local/ncbi-blast-2.2.23+/bin/psiblast\
-query ${i}\
-db $db\
-out ${outfile}/${filename}.out\
-evalue $e\
-num_threads $threads\
-num_iterations $itnum\
-out_pssm ${pssm}$filename\
-out_ascii_pssm ${pssm_txt}${filename}.txt\
-pseudocount $pseudo\
-inclusion_ethresh $pwa_inclusion"
done
Запуск этих сценариев дает "<имя_ сценария> строка <последняя строка перед 'выполнено'>: <попытанная команда>: такого файла или каталога нет. Если я вставлю предпринятую команду в приглашение, оно будет запущено.
Каждая из этих команд выполняется за пару минут.