Verwenden von „find“ im Bash-Skript und Überprüfen, ob die Datei vorhanden ist

Verwenden von „find“ im Bash-Skript und Überprüfen, ob die Datei vorhanden ist
 var= "$(find . -name 'gen*.bt2')" 


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

Ich erhalte Fehlermeldungen

./script.sh: Zeile 4:./gen.4.bt2 ./gen.rev.1.bt2 ./gen.rev.2.bt2 ./gen.1.bt2 ./gen.3.bt2 ./gen.2.bt2:Keine solche Datei oder Verzeichnis Großartig

Wenn ich jedoch denselben Code im Terminal ausführe, werden die Dateien perfekt und ohne Fehler aufgelistet.

Kann mich jemand korrigieren, was mache ich falsch?

Ich muss prüfen, ob bestimmte Dateien vorhanden sind oder nicht. Wenn ja, dann fortfahren.

Antwort1

Das Problem ist das Leerzeichen in Ihrer Zuweisung. Die Shell ist empfindlich gegenüber Leerzeichen. Ihr Befehl entspricht:

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

Sie müssen das Leerzeichen entfernen:

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

verwandte Informationen