usando find no Bash Script e verificando se o arquivo está presente

usando find no Bash Script e verificando se o arquivo está presente
 var= "$(find . -name 'gen*.bt2')" 


 if [ "$var" == "" ]
    then
         echo bad
    else
         echo great  
 fi

Eu recebo erros

./script.sh: linha 4:./gen.4.bt2 ./gen.rev.1.bt2 ./gen.rev.2.bt2 ./gen.1.bt2 ./gen.3.bt2 ./gen.2.bt2:Não existe tal arquivo ou diretório ótimo

Porém, quando executo o mesmo código no terminal, os arquivos são listados perfeitamente, sem nenhum erro.

Alguém pode me corrigir, onde estou errando?

Preciso verificar se determinados arquivos estão presentes ou não, se estiverem presentes, prossiga.

Responder1

O problema é o espaço em sua tarefa. O shell é sensível a espaços em branco. Seu comando é equivalente a:

var="" "./gen.4.bt2 ./gen.rev.1.bt2 ./gen.rev.2.bt2 ./gen.1.bt2 ./gen.3.bt2 ./gen.2.bt2" # output of find

Você precisa remover o espaço:

var="$(find . -name 'gen*.bt2')" 

informação relacionada