Mange gange når du skriver Shell-scripts, kan du komme i en situation, hvor du har brug for at udføre en handling baseret på, om en fil findes eller ej .
I Bash kan du bruge testkommandoen til at kontrollere, om der findes en fil, og bestemme filtypen.
Testkommandoen har en af følgende syntaksformer:
Hvis du vil have dit script til at være bærbart, foretrækker du at bruge den gamle test ; then echo "$FILE exists."fi
Hvis du vil udføre en anden handling baseret på om filen eksisterer eller ikke brug if / then-konstruktionen:
Du kan også bruge testkommandoen uden if-sætningen. Kommandoen efter &&
-operatøren udføres kun, hvis testkommandos udgangsstatus er sand,
Hvis du vil kør en række kommandoer efter &&
-operatøren ved blot at omslutte kommandoerne i krøllede parenteser adskilt af ;
eller &&
:
Modsat til &&
, udsagnet efter ||
operatør udføres kun, hvis testkommandoens udgangsstatus er false
.
Kontroller, om kataloget findes #
Operatorerne -d
giver dig mulighed for at teste, om en fil er en katalog eller ej.
For eksempel for at kontrollere, om /etc/docker
-mappen eksisterer, vil du bruge:
Du kan også bruge de dobbelte parenteser ; then echo "$FILE does not exist."fi
Samme som ovenfor:
Kontroller, om der findes flere filer #
I stedet for at bruge kompliceret indlejret hvis / ellers konstruktioner kan du bruge -a
(eller &&
med ; then echo "Both files exist."fi
Ækvivalente varianter uden brug af IF-sætningen:
File test operators #
Testkommandoen inkluderer følgende FILE-operatører, der giver dig mulighed for at teste for bestemte filtyper:
-
-b
FILE
– Sandt, hvis FILEN eksisterer og er en særlig blokfil. -
-c
FILE
– Sand hvis FILEN findes og er en specialtegnfil. -
-d
FILE
– Sandt, hvis filen findes og er en mappe. -
-e
FILE
– Sandt hvis FILEN findes og er en fil, uanset type (node, bibliotek, stikkontakt osv.). -
-f
FILE
– Sandt hvis FILEN findes og er en almindelig fil (ikke en mappe eller en enhed). -
-G
FILE
– Sandt hvis FILEN findes og har den samme gruppe som brugeren, der kører kommandoen. -
-h
FILE
– Sandt hvis FILEN eksisterer og er et symbolsk link. -
-g
FILE
– Sandt hvis FILEN eksisterer og har set-group-id (sgid
) flag sæt. -
-k
FILE
– Sandt, hvis FILEN findes og har et sticky bit-sæt. -
-L
– Sandt, hvis FILEN eksisterer og er et symbolsk link. -
-O
FILE
– Sandt, hvis filen findes og ejes af brugeren, der kører kommandoen. -
-p
FILE
– Sand hvis FILEN eksisterer og er et rør. -
-r
FILE
– Sandt, hvis FILEN eksisterer og er læsbar. -
-S
FILE
– Sandt hvis FILEN findes og er en stikkontakt. -
-s
FILE
– Sandt hvis FILEN eksisterer og har en nul størrelse. -
-u
FILE
– Sandt hvis FILEN findes, og set-user-id (suid
) flag er indstillet. -
-w
FILE
– Sandt, hvis FILEN findes og kan skrives. -
-x
FILE
– Sandt, hvis FILEN eksisterer og er exe kan klippes.
Konklusion #
I denne vejledning har vi vist dig, hvordan du kontrollerer, om der findes en fil eller mappe i Bash.