Bash 'hvis andet'-erklæring: Selvstudie og eksempler

Brug af if…else-sætningen i Bash til betinget kodeudførelse.

Bash (Bourne Again Shell) er en shell-kommandoprompt og scriptsprog i GNU/Linux-operativsystemer. Det er standardskallen for de fleste Linux-distributioner.

Betingede udsagn er afgørende i ethvert programmeringssprog, både kompilerede og scriptede. De lader brugeren udføre et stykke kode baseret på en foruddefineret betingelse, som er et af grundlaget for programmeringslogik. I denne artikel vil vi lære, hvordan du bruger hvis ellers betinget erklæring i Bash.

Introduktion

Det hvis ellers sætning i Bash lader brugeren manipulere strømmen af ​​kode baseret på forhold. Brugeren kan angive separate kodeblokke, der skal udføres, hvoraf kun én til sidst vil blive eksekveret under kørsel, baseret på den tilsvarende betingelse, som er opfyldt.

Bemærk, at der kan specificeres mere end to betingelser, for hvilke elif erklæring kan bruges. Brugeren kan angive et hvilket som helst antal betingelser vha elif, og endelig en standardbetingelse ved hjælp af andet blok. Lad os se mere om dette i syntaksen og eksemplerne nedenfor.

Generel syntaks

Den generelle syntaks for hvis ellers udtalelse i Bash er:

hvis så  andet  fi

Her, hvis opfylder, dvs. hvis den returnerer 0 (succes), så udføres kodeblok 1. Hvis betingelsen ikke returnerer 0, dvs. den returnerer en fejlstatus, så udføres kodeblokken 2. Det hvis ellers blok slutter med en fi udmelding.

For flere blokke, der svarer til flere betingelser,elif anvendes:

hvis så  elif så  elif så  ... ... andet  fi

Her kontrolleres betingelserne i rækkefølge, og kodeblokken for den første betingelse, som returnerer status 0 (succes), udføres. For eksempel. hvis returnerer ikke-nul status (fejl), derefter er tjekket. Hvis returnerer status 0, er henrettet. Herefter kontrolleres yderligere betingelser ikke, og kodeudførelsen fortsætter til koden efter fi udmelding.

Hvis ingen af ​​betingelserne returnerer status 0, i den anden blok udføres. Bemærk, at den anden blok er valgfri. Hvis ingen betingelse er opfyldt, samt nej andet blok er angivet, vil ingen betinget kodeblok køre, og kodeudførelse vil fortsætte til koden efter fi erklæring, som vist i flowgrafen nedenfor.

Bemærk, at derefter erklæring skal kun bruges efter hvis og elif erklæringer og ikke påkrævet efter andet udmelding.

Eksempler

For at udføre en kodeblok hvis en variabel har en bestemt værdi:

x=0 hvis [ $x -eq 0 ] derefter ekko "Værdi af X er 0" ellers ekko "Værdi af X er ikke 0" fi

Sådan tjekker du for flere værdier:

x=2 if [ $x -eq 0 ] then echo "Value of X is 0" elif [ $x -eq 1 ] then echo "Value of X is 1" elif [ $x -eq 2 ] then echo "Value of X er 2" ellers ekko "Værdien af ​​X er ikke 0" fi

Betingelserne kan være alle Linux-kommandoer. Den tilsvarende kodeblok udføres, hvis kommandoen kører med succes.

hvis npm -v så ekko "NPM til stede i systemet" ellers sudo apt installer npm fi

I eksemplet ovenfor, siden npm ikke var installeret i systemet, kommandoen npm -v returnerede en ikke-nul status. Derfor gik kodeudførelsen ind i andet blok, hvor vi installerer npm vha passende pakke manager. Som vi kan se, fik det mig til at indtaste adgangskoden og begyndte installationen af ​​npm.

Vi kan også rede en anden hvis ellers blok inde i en hvis, andet eller elif blok:

x=0 y=1 if [ $x -eq 0 ] then echo "X is 0" if [ $y -eq 1 ] then echo "Y is 1" else echo "Y is not 1" fi else echo "X is ikke 0" fi

Dette er nyttigt, når et separat sæt af betingelser skal kontrolleres, når en startbetingelse er opfyldt.

For eksempel forsøger følgende kode at installere en webserversoftware:

hvis nginx -v så ekko "NGINX er allerede installeret." ellers hvis sudo apt installerer nginx, så ekko "NGINX installation vellykket." elif sudo apt installer apache2 og ekko derefter "APACHE2 installation vellykket." else echo "Kan ikke installere nogen websoftware." fi

Koden kontrollerer først, om Nginx allerede er installeret i systemet. Hvis det er, viser den bare en besked og afslutter. Hvis den ikke er det, forsøger den at installere Nginx.

Hvis Nginx af en eller anden grund ikke kunne installeres i systemet fra pakken, forsøger den at installere Apache2. Hvis selv Apache2 giver fejl under installationen, afslutter den og viser en meddelelse om, at ingen software kunne installeres.

På lignende måde kan en indlejret blok bruges inde i en elif blokere også.

Eksekverer hvis ellers: Scripts og kommandolinje

I lighed med enhver Bash-kode er hvis ellers statement kan bruges i Bash shell direkte eller fra en eksekverbar shell script fil. Når først Bash-tolken finder en hvis, andet eller elif sætning, fortsætter den shell for at lade brugeren indtaste kodeblokken.

Brugeren kan også gemme denne kode i en scriptfil og udføre scriptfilen.

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 shells som zsh, som skal angives i stedet for bash i starten af ​​denne fil.

For at give udførelsestilladelser til denne fil, kør:

chmod +x test.sh

Til sidst, for at udføre filen, kør:

./test.sh

Konklusion

Svarende til ethvert programmeringssprog, hvis ellers statement er et grundlæggende træk ved Bash. At lære dets brug går langt i at skrive grundlæggende såvel som avancerede scripts.