Mange ganger når du skriver Shell-skript, kan du komme i en situasjon der du trenger å utføre en handling basert på om en fil eksisterer eller ikke .
I Bash kan du bruke testkommandoen til å sjekke om en fil eksisterer og bestemme typen av fil.
Testkommandoen har en av følgende syntaksformer:
Hvis du vil at skriptet ditt skal være bærbart, bør du foretrekke å bruke den gamle testen ; then echo "$FILE exists."fi
Hvis du vil utføre en annen handling basert på om filen eksisterer eller ikke bare bruk if / then-konstruksjonen:
Du kan også bruke testkommandoen uten if-setningen. Kommandoen etter &&
operatøren vil bare kjøres hvis utgangsstatusen til testkommandoen er sann,
Hvis du vil kjør en serie med kommandoer etter &&
operatøren bare legge kommandoene i krøllete parenteser atskilt med ;
eller &&
:
Motsatt til &&
, uttalelsen etter ||
operatør vil bare bli utført hvis utgangsstatusen for testkommandoen er false
.
Sjekk om katalogen eksisterer #
Operatørene -d
lar deg teste om en fil er en katalog eller ikke.
For eksempel for å sjekke om /etc/docker
katalogen du vil bruke:
Du kan også bruke de dobbelte parentesene ; then echo "$FILE does not exist."fi
Samme som ovenfor:
Sjekk om flere filer eksisterer #
I stedet for å bruke kompliserte nestede hvis / annet-konstruksjoner, kan du bruke -a
(eller &&
med ; then echo "Both files exist."fi
Tilsvarende varianter uten å bruke IF-setningen:
Filtestoperatører #
Testkommandoen inkluderer følgende FILE-operatører som lar deg teste for bestemte typer filer:
-
-b
FILE
– Sant hvis FILEN eksisterer og er en spesiell blokkfil. -
-c
FILE
– True hvis FILEN eksisterer og er en spesialtegnfil. -
-d
FILE
– sant hvis FILEN eksisterer og er en katalog. -
-e
FILE
– Sant hvis FILEN eksisterer og er en fil, uavhengig av type (node, katalog, stikkontakt osv.). -
-f
FILE
– Sant hvis FILEN eksisterer og er en vanlig fil (ikke en katalog eller enhet). -
-G
FILE
– Sant hvis FILEN eksisterer og har samme gruppe som brukeren som kjører kommandoen. -
-h
FILE
– Sant hvis FILEN eksisterer og er en symbolsk lenke. -
-g
FILE
– Sant hvis FILEN eksisterer og har set-group-id (sgid
) flaggsett. -
-k
FILE
– Sann hvis FILEN eksisterer og har et klebrig bitflagg satt. -
-L
– Sant hvis FILEN eksisterer og er en symbolsk lenke. -
-O
FILE
– Sant hvis FILEN eksisterer og eies av brukeren som kjører kommandoen. -
-p
FILE
– Sant hvis FILEN eksisterer og er et rør. -
-r
FILE
– Sant hvis FILEN eksisterer og er lesbar. -
-S
FILE
– Sant hvis FILEN eksisterer og er en stikkontakt. -
-s
FILE
– Sann hvis FILEN eksisterer og har en null-størrelse. -
-u
FILE
– Sant hvis FILEN eksisterer, og set-user-id (suid
) flagg er satt. -
-w
FILE
– Sant hvis FILEN eksisterer og er skrivbar. -
-x
FILE
– Sant hvis FILEN eksisterer og er exe kuttbar.
Konklusjon #
I denne guiden har vi vist deg hvordan du sjekker om en fil eller katalog finnes i Bash.