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')"