Android

Sådan kontrolleres, om der findes en fil eller et bibliotek i bash

Steam Controller

Steam Controller

Indholdsfortegnelse:

Anonim

Mange gange, når du skriver Shell-scripts, kan du muligvis befinde dig 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:

test EXPRESSION]

Kontroller, om der findes fil

Når du kontrollerer, om der findes en fil, er de mest anvendte FIL-operatører -e og -f . Den første vil kontrollere, om der findes en fil, uanset hvilken type, mens den anden kun returnerer sand, hvis FILEN er en almindelig fil (ikke et bibliotek eller en enhed).

Den mest læsbare mulighed, når du kontrollerer, om en fil findes eller ej, er at bruge testkommandoen i kombination med if-sætningen. Hvilke som helst af uddragene nedenfor kontrollerer, om filen /etc/resolv.conf findes:

FILE=/etc/resolv.conf if test -f "$FILE"; then echo "$FILE exist" fi

FILE=/etc/resolv.conf if; then echo "$FILE exist" fi

FILE=/etc/resolv.conf if]; then echo "$FILE exist" fi

Hvis du vil udføre en anden handling baseret på, om filen findes eller ikke, skal du bruge if / derefter-konstruktionen:

FILE=/etc/resolv.conf if; then echo "$FILE exist" else echo "$FILE does not exist" fi Brug altid dobbelt citater for at undgå problemer, når du håndterer filer, der indeholder hvidafstand i deres navne.

Du kan også bruge testkommandoen uden if-sætningen. Kommandoen efter && operatoren udføres kun, hvis testkommandoens exit-status er sand, test -f /etc/resolv.conf && echo "$FILE exist"

&& echo "$FILE exist"

] && echo "$FILE exist"

&& { echo "$FILE exist"; cp "$FILE" /tmp/; }

I modsætning til && er udsagnet efter || operator udføres kun, hvis testkommandoens exit-status er false .

&& echo "$FILE exist" || echo "$FILE does not exist"

Kontroller, om der findes en telefonbog

Operatørerne -d giver dig mulighed for at teste, om en fil er et katalog eller ej.

For eksempel at kontrollere, om /etc/docker biblioteket, du vil bruge:

FILE=/etc/docker if; then echo "$FILE is a directory" fi

&& echo "$FILE is a directory"

Du kan også bruge de dobbelte parenteser , 'linuxize_com-medrectangle-4', 'ezslot_7', 160, '0', '0']));

Kontroller, om filen ikke findes

Ligesom mange andre sprog kan testudtrykket bortfalde ved hjælp af ! (udråbstegn) logisk ikke operatør:

FILE=/etc/docker if; then echo "$FILE does not exist" fi

Samme som ovenfor:

&& echo "$FILE does not exist"

Kontroller, om der findes flere filer

I stedet for at bruge komplicerede indlejrede, hvis / andet konstruerer, kan du bruge -a (eller && med ; then echo "$FILE is a directory" fi

FILE=/etc/docker if; then echo "$FILE is a directory" fi

Ækvivalente varianter uden brug af IF-sætningen:

&& echo "both files exist"

] && echo "both files exist"

Filtestoperatører

Testkommandoen inkluderer følgende FIL-operatører, der giver dig mulighed for at teste for bestemte filtyper:

  • -b FILE - Sandt, hvis FILEN findes og er en blok specialfil. -c FILE - Sandt, hvis FILEN findes og er en speciel tegnfil. -d FILE - Sandt, hvis FILEN findes og er et bibliotek. -e FILE - Sandt, hvis FILEN findes og er en fil, uanset type (node, bibliotek, socket osv.). -f FILE - Sandt, hvis FILEN findes og er en almindelig fil (ikke et bibliotek eller enhed). -G FILE - Sandt, hvis FILEN findes og har den samme gruppe som brugeren, der kører kommandoen. -h FILE - Sandt, hvis FILEN findes og er et symbolsk link. -g FILE - Sandt, hvis FILEN findes og har set-group-id (sgid) flagssæt. -k FILE - Sandt, hvis FILEN findes og har et klistret bit-flagssæt. -L FILE - Sandt, hvis FILEN findes og er et symbolsk link. -O FILE - Sandt, hvis FILEN findes og ejes af brugeren, der kører kommandoen. -p FILE - Sandt, hvis FILEN findes og er et rør. -r FILE - Sandt, hvis FILEN findes og er læsbar. -S FILE - Sandt, hvis FILEN findes og er stikkontakt. -s FILE - Sandt, hvis FILEN findes og har ikke-nulstørrelse. -u FILE - Sandt, hvis det eksisterende og sæt-user-id (suid) flag er indstillet. -w FILE - Sandt, hvis FILEN findes og kan skrives. -x FILE - Sandt, hvis FILEN findes og er eksekverbar.

Konklusion

I denne vejledning har vi vist dig, hvordan du kontrollerer, om der findes en fil eller bibliotek ved hjælp af Bash.

bash terminal