Verificarea dacă un fișier sau un director există dintr-un script Bash
Bash este folosit pentru automatizarea comenzilor executate în mod regulat în Linux. Comenzile care sunt destinate operațiunilor pe fișiere/directoare sunt folosite destul de frecvent și, de obicei, înainte de a executa o astfel de comandă, trebuie să verificăm dacă există un anumit fișier sau director. Să vedem cum să efectuăm această verificare.
Sintaxă și utilizare
Fișiere
Pentru a verifica dacă există un fișier, utilizați următoarea sintaxă:
[-f]
Expresia [-f]
returnează 0, adică succes dacă există, iar dacă nu există, returnează o stare diferită de zero. De obicei, aceasta este folosită ca o condiție în
dacă
afirmație.
dacă [ -f ] atunci fi
Pentru a anula valoarea returnată, pur și simplu precedați -f
cu un operator de negație (!
).
dacă [ ! -f ] apoi fi
În acest caz, condiția se va îndeplini dacă dosarul nu exista, deoarece statutul returnat diferit de zero (fals) va fi negat și considerat ca 0 (adevărat).
Rețineți că, dacă fișierul care trebuie verificat nu există în directorul curent și există în alt director, ar trebui menționată calea completă a fișierului în loc de numai numele fișierului.
Directoare
Sintaxă similară cu cea utilizată pentru verificarea fișierelor este folosită pentru verificarea directoarelor.
[-d]
Similar cu instrucțiunea pentru fișiere, această instrucțiune returnează 0, adică succes, dacă directorul există și o stare diferită de zero, adică starea de eșec este returnată dacă nu există. Acesta este, de asemenea, folosit în mod obișnuit într-un
dacă
condiția declarației.
dacă [ -d ] atunci fi
Pentru a anula starea returnată, precede -d
cu un operator de negație (!
).
dacă [ ! -d ] apoi fi
Condiția va îndeplini (starea 0) în acest caz dacă directorul nu există și va eșua (starea diferită de zero) dacă directorul există.
După cum sa menționat anterior pentru fișiere, dacă directorul care trebuie verificat există într-o altă locație și nu în directorul curent, trebuie introdusă întreaga cale a directorului în loc de doar numele directorului.
💡 Sintaxa parantezei ( [...]
) folosit aici este de fapt o comandă Linux numită Test
. Opțiunile -f
și -d
sunt caracteristicile acestei comenzi. Pentru mai multe informații, consultați pagina de manual a testului ( test de om
).
Verificați dintr-un script Bash
În exemplele de mai sus, am folosit sintaxele direct pe terminal. Shell-ul ori de câte ori întâlnește o buclă sau o instrucțiune condiționată (dacă
în cazul nostru), continuă solicitarea și permite utilizatorului să intre în continuare blocul.
Aceleași sintaxe pot fi utilizate din interiorul unui script Bash.
The #!/bin/bash
la început specifică interpretul care urmează să fie utilizat atunci când fișierul este executat. Deși Bash este cel mai frecvent utilizat shell în zilele noastre, unii utilizatori preferă shell-uri precum zsh
, care ar trebui specificat în loc de bash la începutul acestui fișier.
Pentru a acorda permisiuni de execuție pentru acest fișier, rulați:
chmod +x test.sh
In cele din urma, pentru a executa fisierul, alerga:
./test.sh