Det meste af tiden finder vi muligvis en situation, hvor vi muligvis skal udføre en handling, der kontrollerer, om en fil findes eller ej.
I Bash kan vi bruge en “testkommando” til at kontrollere, om der findes en fil og bestemme typen af en fil.
Følgende er syntaxerne for testkommandoen, og vi kan bruge en hvilken som helst af disse kommandoer:
Vi skal bruge en enkelt parentes “[” -kommando for at gøre vores script bærbart til alle POSIX-skaller. Den opgraderede version af testkommandoen indeholder dobbelte parenteser “[[“, som understøttes på de fleste af de moderne systemer, der bruger Bash, Zsh og Ksh som standardskal.
Kontroller, om der findes fil
Mens du kontrollerer, om der findes en fil, er de mest anvendte filoperatorer -e og -f. Indstillingen “-e” bruges til at kontrollere, om der findes en fil uanset type, mens indstillingen “-f” kun bruges til at returnere sand værdi, hvis filen er en almindelig fil (ikke en mappe eller en enhed).
Den mest almindelige mulighed for at kontrollere, om filen findes eller ikke, er at bruge testkommandoen med “hvis betinget udsagn”.
Følgende er eksemplerne for at kontrollere, om “read_file”. txt “-fil findes:
Metode 1
Metode 2
Metode 3
Output
Output for alle de tre metoder vil være som nedenfor, fordi vi har en fil (read_file.txt) til stede i biblioteket:
read_file.txt exist
Hvis vi vil udføre en handling, der giver et resultat baseret på, om filen findes eller ej, kan vi bruge if / then-konstruktionen i følgende måde:
Eksempel
Output
read_file.txt exist
Vi kan også bruge testkommandoen uden if-sætningen. Vi kan bruge en af følgende metoder:
Metode 1
Metode 2
Metode 3
Output
Output for alle de tre metoder vil være som nedenfor, fordi vi har en fil (read_file.txt) til stede i biblioteket:
read_file.txt exist
Eksempel
I modsætning til & &, udsagnet efter || operatør udføres kun, hvis testkommandoens udgangsstatus er “falsk”.
Eksempel
Output
read_file.txt exist
Dette er de almindeligt anvendte metoder i Bash for at kontrollere, om filen findes eller ej.
Kontroller, om biblioteket findes
Operatøren “-d” giver os mulighed for at teste, om en fil er en mappe eller ej.
Følgende er metoderne til at kontrollere, om “Javatpoint” -mappen findes:
Metode 1
Metode 2
Bemærk: Vi kan også bruge dobbelt parentes “[[” i stedet for en enkelt parentes “[” .
Output
Output for begge ovenstående metoder vil være som nedenfor, da vi har en mappe (kaldet Javatpoint) til stede på den angivne placering:
Javatpoint is a directory
Kontroller, om filen ikke eksisterer
Testudtrykket kan ignoreres ved hjælp af udråbstegnet (! -logisk NOT-operator). Tjek følgende eksempel:
Eksempel
Ovenstående script kan også skrives som nedenfor:
Output
missing_read_file.txt unavailable
File Test Operators
Testkommandoerne inkluderer følgende filoperatører, som giver os mulighed for at test for bestemte typer filer:
-b FileReturns | “True” hvis FILEN findes som en blokspecial fil. |
-c FileReturns | “Sand”, hvis filen findes som en specialtegnfil. |
-d FileReturns | “True” hvis FILEN findes som et bibliotek. |
-e FileReturns | “True “hvis FILEN findes som en fil, uanset type (node, bibliotek, stikkontakt osv.). |
-f FileReturns | ” True ” hvis FILEN findes som en almindelig fil (ikke et bibliotek eller en enhed). |
-G FileReturns | “Sand”, hvis FILEN findes og indeholder samme gruppe som brugeren kører komm og. |
-h FileReturns | “True” hvis FILEN findes som et symbolsk link. |
-g FileReturns | “True” hvis FILEN findes og indeholder sæt-group-id (sgid) flag sæt. |
-k FileReturns | “True” hvis FILEN findes og indeholder et sticky bit-sæt. |
-L FileReturns | “True” hvis FIL eksisterer som et symbolsk link. |
-O FileReturns | “True” hvis FILE eksisterer og ejes af den bruger, der kører kommandoen. |
-p FileReturns | “True” hvis FILEN findes som et rør. |
– r FileReturns | “True” hvis FILEN findes som en læsbar fil. |
-S FileReturns | “True” hvis FILE findes som et stik. |
-s FileReturns | “True” hvis FILEN findes og har en nul størrelse. |
-u FileReturns | “True” hvis FILEN findes, og set-user-id (suid) flag er indstillet. |
-w FileReturns | “True” hvis FILEN findes som en skrivbar fil. |
-x FileReturns | “True” hvis FILEN findes som en eksekverbar fil. |