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 zazwyczaj 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 ]
Wyrażenie [ -f ]
zwraca 0, tj. sukces, jeśli istnieje, a jeśli nie istnieje, zwraca status niezerowy. Zazwyczaj jest to używane jako warunek w if
oświadczeniu.
if [ -f ]
then
fi
Aby zanegować zwróconą wartość , po prostu poprzedź -f
operatorem negacji ( !
).
if [ ! -f ]
then
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, a istnieje w innym katalogu, należy podać pełną ścieżkę do pliku, a nie tylko nazwę 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ść niezerową, tj. status niepowodzenia, jeśli nie istnieje. Jest to również często używane w if
warunku instrukcji.
if [ -d ]
then
fi
Aby zanegować zwrócony status, należy poprzedzić -d
operatorem negacji ( !
).
if [ ! -d ]
then
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.
💡 Użyta tutaj składnia nawiasów ( [...]
) jest w rzeczywistości poleceniem Linuksa o nazwie test
. Opcje -f
i -d
to cechy tego polecenia. Aby uzyskać więcej informacji, zobacz stronę podręcznika testu ( man test
).
Sprawdź ze skryptu Bash
W powyższych przykładach użyliśmy składni bezpośrednio na terminalu. Powłoka za każdym razem, gdy napotka pętlę lub instrukcję warunkową ( if
w naszym przypadku), kontynuuje monit i pozwala użytkownikowi wprowadzić blok kontynuujący.
Tej samej składni można użyć w skrypcie Bash.
Na #!/bin/bash
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 preferują powłoki takie jak zsh
, które należy określić zamiast bash na początku tego pliku.
Aby nadać uprawnienia do wykonywania tego pliku, uruchom:
chmod +x test.sh
Na koniec, aby uruchomić plik , uruchom:
./test.sh