Więcej
Sprawdź, czy katalog istnieje w skrypcie powłoki
Jakiego polecenia można użyć do sprawdzenia, czy katalog istnieje, czy nie, w skrypcie powłoki?
3538
3
Aby sprawdzić, czy katalog istnieje w skrypcie powłoki, możesz użyć następującego polecenia:
Lub aby sprawdzić, czy katalog nie istnieje:
Jednakże, jak wskazuje Jon Ericson, kolejne polecenia mogą nie działać zgodnie z przeznaczeniem, jeśli nie weźmiemy pod uwagę, że dowiązanie symboliczne do katalogu również przejdzie to sprawdzenie. Np. uruchamiając to:
spowoduje wyświetlenie komunikatu o błędzie:
Tak więc dowiązania symboliczne mogą być traktowane inaczej, jeśli kolejne komendy oczekują katalogów:
Zwróć szczególną uwagę na podwójne cudzysłowy używane do zawijania zmiennych, powód tego jest wyjaśniony przez 8jean w innej odpowiedzi.
Jeśli zmienne zawierają spacje lub inne nietypowe znaki, prawdopodobnie spowoduje to niepowodzenie skryptu.
Zwróć uwagę, że test -d może dać zaskakujące wyniki:
File under: "When is a directory not a directory?" Odpowiedź: "When it's a symlink to a directory." Nieco dokładniejszy test:
Więcej informacji można znaleźć w podręczniku Basha na temat wyrażeń warunkowych Basha oraz [
[
wbudowanej komendy](https://www.gnu.org/software/bash/manual/bash.html#index-_005b) i [[[
komendy złożonej](https://www.gnu.org/software/bash/manual/bash.html#index-_005b_005b).Więcej funkcji przy użyciu
find
Sprawdzanie istnienia folderu wewnątrz podkatalogów:
Sprawdza istnienie jednego lub kilku katalogów na podstawie wzorca w bieżącym katalogu:
Obie kombinacje. W poniższym przykładzie sprawdzane jest istnienie folderu w bieżącym katalogu: