Jak sprawdzić, czy plik lub katalog istnieje w skrypcie powłoki Bash?

Sprawdzanie, czy plik lub katalog istnieje ze skryptu Bash

Bash służy do automatyzacji regularnie wykonywanych poleceń w systemie Linux. Polecenia przeznaczone do operacji na plikach/katalogach są dość często używane i zwykle przed wykonaniem takiego polecenia musimy sprawdzić, czy dany plik lub katalog istnieje. Zobaczmy, jak przeprowadzić tę kontrolę.

Składnia i użycie

Pliki

Aby sprawdzić, czy plik istnieje, użyj następującej składni:

[ -F  ]

Ekspresja [ -F ] zwraca 0, tj. sukces, jeśli istnieje, a jeśli nie istnieje, zwraca stan niezerowy. Zazwyczaj jest to używane jako warunek w Jeśli oświadczenie.

if [ -f ] to fi

Aby zanegować zwróconą wartość, po prostu poprzedź -F z operatorem negacji (!).

Jeśli [ ! -f ] to fi

W takim przypadku warunek zostanie spełniony, jeśli plik nie istnieje, ponieważ zwrócony status niezerowy (fałsz) zostanie zanegowany i uznany za 0 (prawda).

Zwróć uwagę, że jeśli plik do sprawdzenia nie istnieje w bieżącym katalogu i istnieje w innym katalogu, należy podać pełną ścieżkę do pliku zamiast tylko nazwy pliku.

Katalogi

Podobna składnia jak przy sprawdzaniu plików jest używana do sprawdzania katalogów.

[ -D  ]

Podobnie jak instrukcja dla plików, ta instrukcja zwraca 0, tj. sukces, jeśli katalog istnieje, a wartość niezerowa, tj. status niepowodzenia jest zwracany, jeśli nie istnieje. Jest to również powszechnie używane w Jeśli warunek oświadczenia.

jeśli [ -d ] to fi

Aby zanegować zwrócony status, poprzedź -D z operatorem negacji (!).

Jeśli [ ! -d ] to fi

Warunek zostanie spełniony (status 0) w tym przypadku, jeśli katalog nie istnieje, i nie powiedzie się (stan inny niż zero), jeśli katalog istnieje.

Jak wspomniano wcześniej w przypadku plików, jeśli katalog do sprawdzenia istnieje w innej lokalizacji, a nie w bieżącym katalogu, należy wprowadzić całą ścieżkę katalogu zamiast tylko nazwy katalogu.

💡 Składnia nawiasów ( [...] ) użyte tutaj jest w rzeczywistości poleceniem Linuksa o nazwie test. Opcje -F oraz -D to cechy tego polecenia. Aby uzyskać więcej informacji, zobacz stronę podręcznika testu ( człowiek test ).

Sprawdź ze skryptu Bash

W powyższych przykładach użyliśmy składni bezpośrednio na terminalu. Powłoka, gdy napotka pętlę lub instrukcję warunkową (Jeśli w naszym przypadku) kontynuuje monit i pozwala użytkownikowi wprowadzić kontynuację bloku.

Tej samej składni można użyć w skrypcie Bash.

ten #!/kosz/bash na początku określa interpreter, który ma być użyty podczas wykonywania pliku. Chociaż Bash jest obecnie najczęściej używaną powłoką, niektórzy użytkownicy wolą powłoki takie jak zsh, który należy podać w miejscu bash na początku tego pliku.

Aby nadać uprawnienia do wykonywania dla tego pliku uruchom:

chmod +x test.sh

Wreszcie, uruchomić plik, uruchomić:

./test.sh