Cum să verificați dacă un fișier sau un director există într-un script Bash Shell

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