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 Als geen van de voorwaarden status 0 retourneert, Merk op dat de Om een codeblok uit te voeren als een variabele een bepaalde waarde heeft: Controleren op meerdere waarden: De voorwaarden kunnen elk Linux-commando zijn. Het bijbehorende codeblok wordt uitgevoerd als de opdracht met succes wordt uitgevoerd. In het bovenstaande voorbeeld, aangezien We kunnen er ook nog een nesten 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: 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 Net als bij elke Bash-code, is de De gebruiker kan deze code ook in een scriptbestand opslaan en het scriptbestand uitvoeren. De Om uitvoeringsmachtigingen voor dit bestand te geven, voert u het volgende uit: Voer tot slot het volgende uit om het bestand uit te voeren: Net als bij elke programmeertaal, 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. 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.dan
verklaring mag alleen worden gebruikt na als
en elif
verklaringen en niet vereist na de anders
stelling.Voorbeelden
x=0 if [ $x -eq 0 ] dan echo "Waarde van X is 0" else echo "Waarde van X is niet 0" fi
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
if npm -v echo dan "NPM aanwezig in systeem" else sudo apt install npm fi
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.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
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
elif
ook blokkeren.uitvoeren
als...anders
: Scripts en opdrachtregelals...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.#!/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.chmod +x test.sh
./test.sh
Gevolgtrekking
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.