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

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


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

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: Nenhum arquivo ou diretório desse tipo ótimo

No entanto, quando eu executo o mesmo código no terminal, os arquivos são listados perfeitamente, sem nenhum erro.

Alguém pode me corrigir, onde estou indo errado?

Eu preciso verificar, se certos arquivos estão presentes ou não, se houver, prossiga.

    
por Death Metal 10.10.2013 / 06:27

1 resposta

2

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

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')" 
    
por 10.10.2013 / 06:32