Preverjanje, ali datoteka ali imenik obstaja iz skripta Bash
Bash se uporablja za avtomatizacijo redno izvajanih ukazov v Linuxu. Ukazi, ki so namenjeni operacijam z datotekami/imeniki, se pogosto uporabljajo in običajno moramo, preden izvedemo tak ukaz, preveriti, ali določena datoteka ali imenik obstaja. Poglejmo, kako izvesti to preverjanje.
Sintaksa in uporaba
Datoteke
Če želite preveriti, ali datoteka obstaja, uporabite naslednjo sintakso:
[-f]
Izraz [-f]
vrne 0, torej uspeh, če obstaja, in če ne obstaja, vrne stanje, ki ni nič. Običajno se to uporablja kot pogoj v
če
izjava.
če je [ -f ] potem fi
Za izničenje vrnjene vrednosti, preprosto pred -f
z negacijskim operatorjem (!
).
če [! -f ] nato fi
V tem primeru bo pogoj izpolnjen, če je datoteka ne obstaja, saj bo vrnjeni status, ki ni nič (false), negiran in obravnavan kot 0 (true).
Upoštevajte, da če datoteka, ki jo želite preveriti, ne obstaja v trenutnem imeniku in obstaja v nekem drugem imeniku, je treba namesto samo imena datoteke omeniti celotno pot datoteke.
Imeniki
Podobna sintaksa, kot se uporablja za preverjanje datotek, se uporablja za preverjanje imenikov.
[-d]
Podobno kot stavek za datoteke, ta stavek vrne 0, torej uspeh, če je imenik obstaja, in stanje, ki ni nič, se vrne status napake, če ne obstaja. To se pogosto uporablja tudi v
če
pogoj izjave.
če je [ -d ] potem fi
Če želite zanikati vrnjeno stanje, vstavite pred znakom -d
z negacijskim operatorjem (!
).
če [! -d ] nato fi
Pogoj bo v tem primeru izpolnjen (status 0), če imenik ne obstaja, in ne bo uspel (status ni nič), če imenik obstaja.
Kot smo že omenili za datoteke, če imenik, ki ga je treba preveriti, obstaja na drugem mestu in ne v trenutnem imeniku, je treba namesto imena imenika vnesti celotno pot imenika.
💡 Sintaksa oklepaja ( [...]
), ki se tukaj uporablja, je pravzaprav ukaz Linux, imenovan test
. Možnosti -f
in -d
so značilnosti tega ukaza. Za več informacij si oglejte stran z navodili za testiranje ( moški test
).
Preverite iz skripta Bash
V zgornjih primerih smo sintakse uporabili neposredno na terminalu. Lupina vsakič, ko naleti na zanko ali pogojni stavek (če
v našem primeru) nadaljuje s pozivom in uporabniku omogoči, da vnese blok za nadaljevanje.
Enake sintakse je mogoče uporabiti v skriptu Bash.
The #!/bin/bash
na začetku določa tolmač, ki bo uporabljen, ko se datoteka izvaja. Čeprav je Bash danes najpogosteje uporabljena lupina, nekateri uporabniki raje uporabljajo lupine, kot so zsh
, ki ga je treba podati namesto bash na začetku te datoteke.
Da bi dali dovoljenja za izvajanje za to datoteko zaženite:
chmod +x test.sh
končno, za izvedbo datoteke, zaženi:
./test.sh