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:
-
-bFILE– Sandt, hvis FILEN eksisterer og er en særlig blokfil. -
-cFILE– Sand hvis FILEN findes og er en specialtegnfil. -
-dFILE– Sandt, hvis filen findes og er en mappe. -
-eFILE– Sandt hvis FILEN findes og er en fil, uanset type (node, bibliotek, stikkontakt osv.). -
-fFILE– Sandt hvis FILEN findes og er en almindelig fil (ikke en mappe eller en enhed). -
-GFILE– Sandt hvis FILEN findes og har den samme gruppe som brugeren, der kører kommandoen. -
-hFILE– Sandt hvis FILEN eksisterer og er et symbolsk link. -
-gFILE– Sandt hvis FILEN eksisterer og har set-group-id (sgid) flag sæt. -
-kFILE– Sandt, hvis FILEN findes og har et sticky bit-sæt. -
-L– Sandt, hvis FILEN eksisterer og er et symbolsk link. -
-OFILE– Sandt, hvis filen findes og ejes af brugeren, der kører kommandoen. -
-pFILE– Sand hvis FILEN eksisterer og er et rør. -
-rFILE– Sandt, hvis FILEN eksisterer og er læsbar. -
-SFILE– Sandt hvis FILEN findes og er en stikkontakt. -
-sFILE– Sandt hvis FILEN eksisterer og har en nul størrelse. -
-uFILE– Sandt hvis FILEN findes, og set-user-id (suid) flag er indstillet. -
-wFILE– Sandt, hvis FILEN findes og kan skrives. -
-xFILE– 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.