Ich versuche, ein Skript zu schreiben, das eine Subversion-URL automatisch auscheckt oder aktualisiert, je nachdem, ob ein bestimmtes Verzeichnis vorhanden ist oder nicht.
Aus irgendeinem Grund funktioniert mein Code nicht und gibt immer true zurück , auch wenn er false ist:
def directory_exists?(directory)
return false if Dir[directory] == nil
true
end
Was mache ich falsch?
Dir.exists?
nicht sauberer alsFile.directory?
?Dir.exists?
ist veraltet, benutzeDir.exist
Dir.exist?
Sie können auch
Dir::exist?
wie folgt verwenden:quelle
undefined method `exists?' for Dir:Class (NoMethodError)
. Auch die Pluralform ist jetzt veraltet, verwenden Sie.exist?
stattdessen.Alle anderen Antworten sind korrekt. Möglicherweise treten jedoch Probleme auf, wenn Sie versuchen, das Verzeichnis im Home-Verzeichnis eines Benutzers zu überprüfen. Stellen Sie sicher, dass Sie den relativen Pfad erweitern, bevor Sie Folgendes überprüfen:
quelle
Dir[]
Gibt ein Array zurück, so dass es niemals sein wirdnil
. Wenn Sie es auf Ihre Weise tun möchten, können Sie es tunwelches zurückkehren wird,
true
wenn es nicht gefunden wurde.quelle
Sie könnten verwenden
Kernel#test
:Es hat seinen Ursprung in https://ss64.com/bash/test.html. Sie werden feststellen, dass bash
test
dieses Flag hat-d
, um zu testen, ob ein Verzeichnis vorhanden ist-d file True if file is a Directory. [[ -d demofile ]]
quelle