Próbuję napisać skrypt, który automatycznie pobiera lub aktualizuje adres URL Subversion na podstawie tego, czy określony katalog istnieje, czy nie.
Z jakiegoś powodu mój kod nie działa i zawsze zwraca wartość true, nawet jeśli jest fałszywa:
def directory_exists?(directory)
return false if Dir[directory] == nil
true
end
Co ja robię źle?
Dir.exists?
nie być czystsze niżFile.directory?
?Dir.exists?
jest przestarzały, użyjDir.exist
Dir.exist?
Możesz również użyć w ten
Dir::exist?
sposób:źródło
undefined method `exists?' for Dir:Class (NoMethodError)
. Ponadto forma liczby mnogiej jest teraz przestarzała, użyj.exist?
zamiast niej.Wszystkie inne odpowiedzi są poprawne, jednak możesz mieć problemy, jeśli próbujesz sprawdzić katalog w katalogu domowym użytkownika. Upewnij się, że rozwinąłeś ścieżkę względną przed sprawdzeniem:
źródło
Dir[]
zwraca tablicę, więc nigdy nie będzienil
. Jeśli chcesz to zrobić po swojemu, możesz to zrobićktóry zwróci,
true
jeśli nie zostanie znaleziony.źródło
Możesz użyć
Kernel#test
:pobiera swoje źródła z https://ss64.com/bash/test.html zauważysz, że bash
test
ma tę flagę-d
do sprawdzenia, czy katalog istnieje-d file True if file is a Directory. [[ -d demofile ]]
źródło