Sådan kontrolleres, om en fil eller mappe findes i et Bash Shell-script

Kontrollerer, om en fil eller mappe findes fra et Bash-script

Bash bruges til at automatisere regelmæssigt udførte kommandoer i Linux. Kommandoer, der er beregnet til operationer på filer/mapper, bruges ret hyppigt, og normalt, før vi udfører en sådan kommando, skal vi kontrollere, om den pågældende fil eller mappe findes. Lad os se, hvordan du udfører denne kontrol.

Syntaks og brug

Filer

For at kontrollere, om der findes en fil, brug følgende syntaks:

[ -f ]

Udtrykket [ -f ] returnerer 0, dvs. succes if eksisterer, og hvis den ikke eksisterer, returnerer den en status, der ikke er nul. Typisk bruges dette som en betingelse i hvis udmelding.

hvis [ -f ] så fi

For at ophæve den returnerede værdi, skal du blot gå foran -f med en negationsoperatør (!).

hvis [! -f ] derefter fi

I dette tilfælde vil betingelsen opfylde, hvis filen eksisterer ikke, da den returnerede ikke-nul-status (falsk) vil blive negeret og betragtet som 0 (sand).

Bemærk, at hvis filen, der skal kontrolleres, ikke findes i den aktuelle mappe og findes i en anden mappe, skal den fulde sti til filen nævnes i stedet for kun filnavnet.

Vejviser

Lignende syntaks, som bruges til at kontrollere filer, bruges til at kontrollere mapper.

[ -d ]

I lighed med sætningen for filer, returnerer denne sætning 0, dvs. succes, hvis mappen eksisterer, og en ikke-nul, dvs. fejlstatus, returneres, hvis den ikke eksisterer. Dette er også almindeligt brugt i en hvis erklæringsbetingelse.

hvis [ -d ] så fi

For at ophæve den returnerede status skal du gå foran -d med en negationsoperatør (!).

hvis [! -d ] derefter fi

Betingelsen vil opfylde (status 0) i dette tilfælde, hvis biblioteket ikke eksisterer, og vil mislykkes (status ikke nul), hvis biblioteket eksisterer.

Som nævnt før for filer, hvis den mappe, der skal kontrolleres, findes på en anden placering og ikke den aktuelle mappe, skal hele mappestien indtastes i stedet for kun mappenavnet.

💡 Beslagssyntaksen ( [...] ) brugt her er faktisk en Linux-kommando kaldet prøve. Mulighederne -f og -d er funktionerne i denne kommando. For mere information, se manualsiden for test ( mand test ).

Tjek fra et Bash Script

I ovenstående eksempler har vi brugt syntakserne direkte på terminalen. Skallen, når den støder på en løkke eller en betinget erklæring (hvis i vores tilfælde), fortsætter den prompten og lader brugeren indtaste fortsæt blokken.

De samme syntakser kan bruges inde fra et Bash-script.

Det #!/bin/bash ved starten angiver den fortolker, der skal bruges, når filen eksekveres. Selvom Bash er den mest brugte shell i dag, foretrækker nogle brugere som shells zsh, som skal angives i stedet for bash i starten af ​​denne fil.

At give udførelsestilladelser for denne fil, kør:

chmod +x test.sh

Langt om længe, for at udføre filen, løb:

./test.sh