Bash sjekk om filen ikke eksisterer

Bash sjekk om filen ikke eksisterer
Bash Scripting er et programmeringsspråk som kan brukes raskt i Linux og andre operativsystemmiljøer for å automatisere oppgavene dine. Når vi skriver bashskript ofte, må vi operere på filer i filsystemet. Men hvis koden vår prøver å få tilgang til en fil og den ikke eksisterer, kan vi få en uventet feil. Derfor er den beste praksisen for å se etter eksistens for filer før du prøver å referere til filen i en bash -skript.

Eksempel 01

Vi må legge til bashstøtten i den som '#!/bin/bash '. Etter dette har vi initialisert en 'FIL' variabel med veien til selve filen 'fil.sh ' Jeg.e., '/Home/Linuxhint/File.sh '. For å se etter at filen eksisterer eller ikke, vil vi bruke 'Hvis da' Uttalelse som tar forholdene i de enkle firkantede parentesene i denne bash -koden. For å sjekke om filen eksisterer, må vi bruke '-f' Alternativ etterfulgt av den dobbeltkjørte variabelen "FIL" med dollarkarakteren “$”. Dette for å sjekke om den gitte banen til filen inneholder en fil med navnet 'fil.sh ' eller ikke.

Tilstanden ender her og 'deretter' En del av uttalelsen starter. Hvis filen eksisterer, vil den vise meldingen som filen 'fil.sh ' eksisterer i den gitte banen ved hjelp av 'ekko' uttalelse. De 'hvis' Uttalelsen slutter her med syntaks for slutt 'fi'.

#!/bin/bash
Fil =/hjemme/linuxhint/fil.sh
hvis [-f "$ fil"]; deretter
ekko "$ fil eksisterer!""
fi

Lagre nå bashodefilen og kjør filen ved å bruke kommandolinjen nedenfor:

bash -fil.sh

Her er utgangen når du kjører kommandoen:

linuxhint@u22: ~ $ bash -fil.sh
/hjemme/linuxhint/fil.sh eksisterer!

Hvis vi finjusterer skriptet og endrer 'FIL' Til en fil som ikke eksisterer og kjører på nytt skriptet, får vi ingen utdata fra skriptet.

Eksempel 02

I dette eksemplet vil vi legge til en annen uttalelse til IF -uttalelsen i forrige eksempel. På den måten hvis filen ikke eksisterer, vil vi få en passende feilmelding skrevet ut til standardutgangen eller skjermen. Her er den nye koden:

#!/bin/bash
Fil =/hjemme/linuxhint/fil.sh
hvis [-f "$ fil"]; deretter
ekko "$ fil eksisterer!""
ellers
Echo "$ -fil eksisterer ikke!""
fi

Vi kan kjøre skriptene som følger:

$ bash -fil.sh

Vi får samme produksjon som før:

linuxhint@u22: ~ $ bash -fil.sh
/hjemme/linuxhint/fil.sh eksisterer!

Men nå hvis vi hacker filnavnet til å være en fil som ikke eksisterer, vil vi få en riktig feilmelding:

linuxhint@u22: ~ $ bash -fil.sh
/Hjem/Linuxhint/Nofile.SH eksisterer ikke!

Eksempel 03

La oss si, du vil bruke 'ikke' karakter slik at du først sjekker om filen ikke eksisterer. For eksempel hvis filen ikke eksisterer, kan det være lurt å skrive ut en feilmelding, men du kan ikke engang kreve en annen i denne sammenhengen, da du bare bryr deg om filen ikke eksisterer, ellers kan skriptet fortsette som normalt uten å gå ut av en feil.

Her er syntaksen for å bruke '!' tegn for å snu sjekken for å sjekke Hvis filen ikke eksisterer:

#!/bin/bash
Fil =/hjemme/linuxhint/nofile.sh
Hvis [ ! -f "$ fil"]; deretter
Echo "$ -fil eksisterer ikke!""
ellers
ekko "$ fil eksisterer!""
fi

Vi kjører først skriptet med det ødelagte filnavnet:

$ bash -fil.sh

Utgangen når den utløser feiltilstanden er her nedenfor:

linuxhint@u22: ~ $ bash -fil.sh
/Hjem/Linuxhint/Nofile.SH eksisterer ikke!

Nå kan vi fikse filnavnet for å være filen som eksisterer:

#!/bin/bash
Fil =/hjemme/linuxhint/fil.sh
Hvis [ ! -f "$ fil"]; deretter
Echo "$ -fil eksisterer ikke!""
ellers
ekko "$ fil eksisterer!""
fi

Her er utdataene med filen som eksisterer:

linuxhint@u22: ~ $ bash -fil.sh
/hjemme/linuxhint/fil.sh eksisterer!
linuxhint@u22: ~ $

Eksempel 04

I dette eksemplet vil vi vise en rask syntaks fra skallet uten å skrive et skript og introdusere logiske operatører for å skrive ut suksess eller feil. Her er manuset du kan kjøre på terminalen:

linuxhint@u22: ~ $ [-f -fil.sh] && ekko "fil eksisterer" || ekko "-filen eksisterer ikke"
Filen eksisterer
linuxhint@u22: ~ $

I koden ovenfor skriver vi koden direkte på den interaktive terminalen. Vi bruker en betinget test for å sjekke om filen eksisterer. Det vil returnere 0 for å lykkes. Logisk eller og logisk og operatører brukes til å indikere hvilken melding som skal skrives ut, suksess eller feil.

Eksempel 05

Du kan også bruke en lignende tilnærming som vist i denne artikkelen for å se etter eksistensen av en katalog ved hjelp av '-D' alternativ i sin tilstand i stedet for '-f'. La oss si, vi har en katalog 'test' i vår hjemmemappe, og vi har brukt det samme skriptet med '-D' Alternativ for å se etter den og vise strengmeldingen i henhold til tilstandsutgangen.

Her er koden med katalogsjekken i filen 'dir.sh ':

#!/bin/bash
Fil =/hjemme/linuxhint/test
hvis [-d "$ fil"]; deretter
Echo "Directory $ -fil eksisterer!""
ellers
Echo "Directory $ -fil eksisterer ikke!""
fi

For å kjøre kodeutførelsen:

$ bash dir.sh
linuxhint@u22: ~ $ bash dir.sh
Katalog/hjemme/linuxhint/test eksisterer!

Og den negative testkoden og utgangen:

#!/bin/bash
Fil =/hjemme/linuxhint/test
Hvis [ ! -d "$ fil"]; deretter
Echo "Directory $ -fil eksisterer ikke!""
ellers
Echo "Directory $ -fil eksisterer!""
fi
linuxhint@u22: ~ $ bash dir.sh
Katalog/hjemme/linuxhint/test eksisterer ikke!

Konklusjon

Dette handler om bruk av bash -skript for å sjekke om filer og kataloger eksisterer. Vi har også brukt den direkte koden i bash -konsollen som bruker testoperasjoner og logiske operatører.