Wiele razy podczas pisania skryptów powłoki możesz znaleźć się w sytuacji, w której musisz wykonać akcję w oparciu o to, czy plik istnieje, czy nie .
W Bash możesz użyć polecenia test, aby sprawdzić, czy plik istnieje i określić typ pliku.
Polecenie test przyjmuje jedną z następujących form składni:
Jeśli chcesz, aby Twój skrypt był przenośny, powinieneś użyć starego testu ; then echo "$FILE exists."fi
Jeśli chcesz wykonać inną akcję w zależności od tego, czy plik istnieje, czy nie, po prostu użyj konstrukcji if / then:
Możesz także użyć polecenia test bez instrukcji if. Polecenie za operatorem && zostanie wykonane tylko wtedy, gdy kod zakończenia polecenia testowego to prawda,
Jeśli chcesz uruchom serię poleceń po operatorze &&, po prostu umieść polecenia w nawiasach klamrowych, oddzielając je ; lub &&:
W przeciwieństwie do &&, instrukcja po Operator || zostanie wykonany tylko wtedy, gdy kod zakończenia polecenia testowego to false.
Sprawdź, czy katalog istnieje #
Operatory -d pozwalają sprawdzić, czy plik jest czy nie.
Na przykład, aby sprawdzić, czy katalog /etc/docker istnieje, należy użyć:
Możesz także użyć podwójnych nawiasów ; then echo "$FILE does not exist."fi
Tak jak powyżej:
Sprawdź, czy istnieje wiele plików #
Zamiast używać skomplikowanych zagnieżdżonych konstrukcji if / else, możesz użyć -a (lub && z ; then echo "Both files exist."fi
Równoważne warianty bez użycia instrukcji IF:
Operatory testu plików #
Polecenie test zawiera następujące operatory FILE, które umożliwiają testowanie określonych typów plików:
-
-bFILE– Prawda, jeśli PLIK istnieje i jest specjalnym plikiem blokowym. -
-cFILE– Prawda jeśli PLIK istnieje i jest plikiem znaków specjalnych. -
-dFILE– Prawda, jeśli PLIK istnieje i jest katalogiem. -
-eFILE– Prawda, jeśli PLIK istnieje i jest plikiem, niezależnie od typu (węzeł, katalog, gniazdo itp.). -
-fFILE– Prawda, jeśli PLIK istnieje i jest zwykłym plikiem (nie katalogiem ani urządzeniem). -
-GFILE– Prawda, jeśli PLIK istnieje i ma tę samą grupę co użytkownik uruchamiający polecenie. -
-hFILE– Prawda, jeśli PLIK istnieje i jest dowiązaniem symbolicznym. -
-gFILE– Prawda, jeśli PLIK istnieje i ma ustawioną flagę set-group-id (sgid). -
-kFILE– Prawda, jeśli PLIK istnieje i ma ustawioną lepką flagę bitową. -
-L– Prawda, jeśli PLIK istnieje i jest dowiązaniem symbolicznym. -
-OFILE– Prawda, jeśli PLIK istnieje i należy do użytkownika uruchamiającego polecenie. -
-pFILE– Prawda, jeśli PLIK istnieje i jest potokiem. -
-rFILE– Prawda, jeśli PLIK istnieje i można go odczytać. -
-SFILE– Prawda, jeśli PLIK istnieje i jest gniazdem. -
-sFILE– Prawda, jeśli PLIK istnieje i ma niezerowy rozmiar. -
-uFILE– Prawda, jeśli PLIK istnieje i ustawiona jest flaga set-user-id (suid). -
-wFILE– Prawda, jeśli PLIK istnieje i można go zapisać. -
-xFILE– Prawda, jeśli PLIK istnieje i jest exe nadaje się do krojenia.
Wniosek #
W tym przewodniku pokazaliśmy, jak sprawdzić, czy plik lub katalog istnieje w Bash.