Eu realmente não consigo ver por que a variável PROJECT
não está sendo expandida corretamente na sua última linha de código (a menos que você esteja procurando no lugar errado pelo arquivo gerado), mas eu vejo que você não está t citar duas vezes suas expansões variáveis. Não duplicar as citações causaria problemas assim que $PROJECT
contivesse espaços ou novas linhas, ou qualquer outro caractere especial para o shell.
Você também está pulando por muitos obstáculos para algo que poderia ser feito com um único programa awk
:
proj=$(<temp/project_name_final)
awk 'NR==FNR { species[$3]; next } /Bifidobacterium/ && !($2 in species) { print $2 }' \
"${proj}_species.txt" "${proj}_genera.txt" >"temp/${proj}_selected_Bif"
Este programa awk
lê os dois arquivos ${proj}_species.txt
e ${proj}_genera.txt
. Ao ler o primeiro arquivo, sua terceira coluna é usada para criar uma chave na matriz associativa ou hash species
. Quando começamos a ler o segundo arquivo, estamos interessados somente nas linhas que contêm a string Bifidobacterium
e cuja segunda coluna não é uma chave no species
hash. Para essas linhas, produzimos a segunda coluna.
Toda a saída vai para temp/${proj}_selected_Bif
.
Observe a aspas duplas de todas as expansões da variável proj
. Eu usei um nome de variável com casete baixo, uma vez que variáveis de invólucro superior são reservadas para variáveis de ambiente de sistema e shell.
Veja também