Com comprovar si un fitxer o directori existeix en un script Bash Shell

Comprovar si existeix un fitxer o directori des d'un script Bash

Bash s'utilitza per automatitzar ordres executades regularment a Linux. Les ordres destinades a operacions sobre fitxers/directoris s'utilitzen amb força freqüència i, normalment, abans d'executar aquesta ordre, hem de comprovar si el fitxer o directori en particular existeix. Vegem com realitzar aquesta comprovació.

Sintaxi i ús

Fitxers

Per comprovar si existeix un fitxer, utilitzeu la sintaxi següent:

[-f]

L'expressió [-f] retorna 0, és a dir, èxit si existeix, i si no existeix, retorna un estat diferent de zero. Normalment, això s'utilitza com a condició en el si declaració.

si [-f] llavors fi

Per negar el valor retornat, simplement precedi el -f amb un operador de negació (!).

si [ ! -f ] llavors fi

En aquest cas, la condició es complirà si el fitxer no existeix, ja que l'estat diferent de zero retornat (fals) es negarà i es considerarà 0 (cert).

Tingueu en compte que si el fitxer a comprovar no existeix al directori actual i existeix en algun altre directori, s'hauria d'esmentar la ruta completa del fitxer en lloc de només el nom del fitxer.

Directoris

Una sintaxi similar a la que s'utilitza per comprovar els fitxers s'utilitza per comprovar els directoris.

[-d]

De manera similar a la declaració per a fitxers, aquesta instrucció retorna 0, és a dir, èxit, si el directori existeix, i un estat diferent de zero, és a dir, es retorna l'estat d'error si no existeix. Això també s'utilitza habitualment en un si condició de declaració.

si [ -d ] llavors fi

Per negar l'estat retornat, precediu -d amb un operador de negació (!).

si [ ! -d ] llavors fi

La condició es complirà (estat 0) en aquest cas si el directori no existeix, i fallarà (estat diferent de zero) si el directori existeix.

Com s'ha esmentat abans per als fitxers, si el directori que s'ha de comprovar existeix en una altra ubicació i no en el directori actual, s'ha d'introduir tot el camí del directori en comptes de només el nom del directori.

💡 La sintaxi de claudàtors ( [...] ) que s'utilitza aquí és en realitat una ordre de Linux anomenada prova. Les opcions -f i -d són les característiques d'aquesta comanda. Per obtenir més informació, consulteu la pàgina de manual de la prova ( prova d'home ).

Comproveu des d'un script Bash

En els exemples anteriors, hem utilitzat les sintaxis directament al terminal. L'intèrpret d'ordres sempre que troba un bucle o una instrucció condicional (si en el nostre cas), continua la sol·licitud i permet que l'usuari introdueixi el bloc continuar.

Les mateixes sintaxis es poden utilitzar des d'un script Bash.

El #!/bin/bash al començament especifica l'intèrpret que s'utilitzarà quan s'executa el fitxer. Tot i que Bash és l'intèrpret d'ordres més utilitzat avui dia, alguns usuaris prefereixen shells com zsh, que s'hauria d'especificar en lloc de bash a l'inici d'aquest fitxer.

Per donar permisos d'execució per a aquest fitxer, executeu:

chmod +x prova.sh

Finalment, per executar el fitxer, correr:

./prova.sh