Bash 'als anders'-instructie: zelfstudie en voorbeelden

De if... else-instructie in Bash gebruiken voor het uitvoeren van voorwaardelijke code.

Bash (Bourne Again Shell) is een shell-opdrachtprompt en scripttaal in GNU/Linux-besturingssystemen. Het is de standaard shell voor de meeste Linux-distributies.

Voorwaardelijke instructies zijn essentieel in elke programmeertaal, zowel gecompileerd als gescript. Ze laten de gebruiker een stukje code uitvoeren op basis van een vooraf gedefinieerde voorwaarde, wat een van de fundamenten is van programmeerlogica. In dit artikel zullen we leren hoe u de als...anders voorwaardelijke verklaring in Bash.

Invoering

De als...anders statement in Bash laat de gebruiker de codestroom manipuleren op basis van voorwaarden. De gebruiker kan afzonderlijke codeblokken specificeren die moeten worden uitgevoerd, waarvan er uiteindelijk slechts één wordt uitgevoerd tijdens runtime, op basis van de overeenkomstige voorwaarde waaraan is voldaan.

Merk op dat er meer dan twee voorwaarden kunnen worden gespecificeerd, waarvoor: elif verklaring kan worden gebruikt. Gebruiker kan een willekeurig aantal voorwaarden opgeven met behulp van elif, en tot slot een standaardvoorwaarde met anders blok. Laten we hier meer over bekijken in de syntaxis en voorbeelden hieronder.

Algemene syntaxis

De algemene syntaxis voor als...anders verklaring in Bash is:

als dan  anders  fi

Hier, als de voldoet, d.w.z. als het 0 (succes) retourneert, wordt codeblok 1 uitgevoerd. Als de voorwaarde geen 0 retourneert, d.w.z. het retourneert een foutstatus, dan wordt het codeblok 2 uitgevoerd. De als...anders blok eindigt met a fi stelling.

Voor meerdere blokken die overeenkomen met meerdere voorwaarden,elif is gebruikt:

als dan  elif dan  elif dan  ... ... anders  fi

Hier worden de voorwaarden op volgorde gecontroleerd en het codeblok van de eerste voorwaarde die status 0 (succes) retourneert, wordt uitgevoerd. bijv. als retourneert een niet-nulstatus (falen), dan is nagekeken. Als geeft status 0 terug, is geëxecuteerd. Hierna worden verdere voorwaarden niet gecontroleerd en gaat de code-uitvoering verder naar de code na de fi stelling.

Als geen van de voorwaarden status 0 retourneert, in het else-blok wordt uitgevoerd. Merk op dat het else-blok optioneel is. Als aan geen enkele voorwaarde is voldaan, en ook niet anders blok is opgegeven, wordt er geen voorwaardelijk codeblok uitgevoerd en wordt de uitvoering van de code voortgezet tot de code na de fi verklaring, zoals weergegeven in het onderstaande stroomdiagram.

Merk op dat de dan verklaring mag alleen worden gebruikt na als en elif verklaringen en niet vereist na de anders stelling.

Voorbeelden

Om een ​​codeblok uit te voeren als een variabele een bepaalde waarde heeft:

x=0 if [ $x -eq 0 ] dan echo "Waarde van X is 0" else echo "Waarde van X is niet 0" fi

Controleren op meerdere waarden:

x=2 if [ $x -eq 0 ] dan echo "Waarde van X is 0" elif [ $x -eq 1 ] dan echo "Waarde van X is 1" elif [ $x -eq 2 ] dan echo "Waarde van X is 2" else echo "Waarde van X is niet 0" fi

De voorwaarden kunnen elk Linux-commando zijn. Het bijbehorende codeblok wordt uitgevoerd als de opdracht met succes wordt uitgevoerd.

if npm -v echo dan "NPM aanwezig in systeem" else sudo apt install npm fi

In het bovenstaande voorbeeld, aangezien npm was niet in het systeem geïnstalleerd, de opdracht npm -v een niet-nulstatus geretourneerd. Daarom ging de uitvoering van de code in de anders blok, waar we npm installeren met geschikt pakket manager. Zoals we kunnen zien, vroeg het me om het wachtwoord in te voeren en begon met de installatie van npm.

We kunnen er ook nog een nesten als...anders blok binnen een als, anders of elif blok:

x=0 y=1 als [ $x -eq 0 ] dan echo "X is 0" als [ $y -eq 1 ] dan echo "Y is 1" else echo "Y is niet 1" fi else echo "X is niet 0" fi

Dit is handig wanneer een afzonderlijke set voorwaarden moet worden gecontroleerd zodra aan een initiële voorwaarde is voldaan.

De volgende code probeert bijvoorbeeld een webserversoftware te installeren:

als nginx -v dan echo "NGINX is al geïnstalleerd." anders als sudo apt nginx installeert, echo "NGINX-installatie succesvol." elif sudo apt install apache2 en echo "APACHE2 installatie succesvol." else echo "Kan geen websoftware installeren." fi

De code controleert eerst of Nginx al in het systeem is geïnstalleerd. Als dit het geval is, wordt er alleen een bericht weergegeven en wordt het afgesloten. Als dit niet het geval is, probeert het Nginx te installeren.

Als Nginx om de een of andere reden niet vanuit het pakket in het systeem kon worden geïnstalleerd, probeert het Apache2 te installeren. Als zelfs Apache2 een foutmelding geeft tijdens het installeren, wordt het afgesloten met een bericht dat er geen software kan worden geïnstalleerd.

Op een vergelijkbare manier kan een genest blok worden gebruikt binnen een elif ook blokkeren.

uitvoeren als...anders: Scripts en opdrachtregel

Net als bij elke Bash-code, is de als...anders statement kan direct in de Bash-shell worden gebruikt of vanuit een uitvoerbaar shellscriptbestand. Zodra de Bash-interpreter een als, anders of elif statement, gaat het verder met de shell om de gebruiker het codeblok te laten invoeren.

De gebruiker kan deze code ook in een scriptbestand opslaan en het scriptbestand uitvoeren.

De #!/bin/bash aan het begin specificeert de interpreter die moet worden gebruikt wanneer het bestand wordt uitgevoerd. Hoewel Bash tegenwoordig de meest gebruikte shell is, geven sommige gebruikers de voorkeur aan shells zoals zsh, die aan het begin van dit bestand in plaats van bash moeten worden gespecificeerd.

Om uitvoeringsmachtigingen voor dit bestand te geven, voert u het volgende uit:

chmod +x test.sh

Voer tot slot het volgende uit om het bestand uit te voeren:

./test.sh

Gevolgtrekking

Net als bij elke programmeertaal, als...anders verklaring is een fundamenteel kenmerk van Bash. Door het gebruik ervan te leren, kom je een heel eind bij het schrijven van zowel basis- als geavanceerde scripts.