Kako preveriti, ali datoteka ali imenik obstaja v skriptu lupine Bash

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