Kako provjeriti postoji li datoteka ili direktorij u skripti Bash Shell

Provjerava postoji li datoteka ili direktorij iz Bash skripte

Bash se koristi za automatizaciju redovito izvršavanih naredbi u Linuxu. Naredbe koje su namijenjene operacijama nad datotekama/direktorijima se vrlo često koriste i obično, prije nego što izvršimo takvu naredbu, moramo provjeriti postoji li određena datoteka ili direktorij. Pogledajmo kako izvršiti ovu provjeru.

Sintaksa i upotreba

Datoteke

Da biste provjerili postoji li datoteka, koristite sljedeću sintaksu:

[ -f ]

Izraz [ -f ] vraća 0, tj. uspjeh ako postoji, a ako ne postoji, vraća status koji nije nula. Obično se ovo koristi kao uvjet u ako izjava.

ako je [ -f ] onda fi

Za negiranje vraćene vrijednosti, jednostavno ispred -f s operatorom negacije (!).

ako [ ! -f ] zatim fi

U ovom slučaju, uvjet će zadovoljiti ako datoteka ne postoji, budući da će vraćeni status koji nije nula (lažno) biti negiran i smatran 0 (true).

Imajte na umu da ako datoteka koju treba provjeriti ne postoji u trenutnom direktoriju i postoji u nekom drugom direktoriju, treba spomenuti puni put datoteke umjesto samo naziva datoteke.

Imenici

Slična sintaksa koja se koristi za provjeru datoteka koristi se za provjeru direktorija.

[-d]

Slično naredbi za datoteke, ova naredba vraća 0, tj. uspjeh, ako je direktorij postoji, a ne nula, tj. vraća se status greške ako ne postoji. Ovo se također obično koristi u ako stanje izjave.

ako je [ -d ] onda fi

Da biste poništili vraćeni status, prethodite -d s operatorom negacije (!).

ako [ ! -d ] zatim fi

Uvjet će zadovoljiti (status 0) u ovom slučaju ako imenik ne postoji, i neće uspjeti (status koji nije nula) ako imenik postoji.

Kao što je već spomenuto za datoteke, ako direktorij koji treba provjeriti postoji na drugom mjestu, a ne u trenutnom direktoriju, potrebno je unijeti cijeli put direktorija umjesto samo naziva direktorija.

💡 Sintaksa zagrade ( [...] ) koja se ovdje koristi zapravo je Linux naredba pod nazivom test. Opcije -f i -d su značajke ove naredbe. Za više informacija pogledajte stranicu priručnika za testiranje ( muški test ).

Provjerite iz Bash skripte

U gornjim primjerima koristili smo sintakse izravno na terminalu. Ljuska kad god naiđe na petlju ili uvjetnu naredbu (ako u našem slučaju), nastavlja s promptom i dopušta korisniku da uđe u nastavak bloka.

Ista se sintaksa može koristiti unutar Bash skripte.

The #!/bin/bash na početku određuje interpreter koji će se koristiti kada se datoteka izvršava. Iako je Bash najčešće korištena školjka danas, neki korisnici preferiraju školjke poput zsh, koji bi trebao biti naveden umjesto bash na početku ove datoteke.

Da biste dali dopuštenja za izvršavanje za ovu datoteku pokrenite:

chmod +x test.sh

Konačno, da izvršite datoteku, trčanje:

./test.sh