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