Het schrijven van een Bourne Again Shell (Bash) script kan een lonende ervaring zijn, vooral wanneer je er logica aan toevoegt om de robuustheid ervan te garanderen. Een manier om deze logica op te nemen, waardoor je script slimmer wordt, is door middel van het gebruik van conditionele verklaringen, specifiek ‘bash if else’.
In deze diepe duik sta je op het punt om de kracht en nuances van de Bash if-else en case verklaringen te begrijpen. Dit zal je helpen bij het maken van foutloze, intelligente Bash-scripts. We zullen ook enkele beste praktijken toevoegen om ervoor te zorgen dat je script als een professional schrijft.
Opgewonden? Duik erin en verhoog je Bash-scripting vaardigheden!
Het podium instellen: Vereisten
Om het meeste uit deze tutorial te halen, zijn er enkele essentiële zaken die je klaar moet hebben:
- A Linux or Windows system armed with Bash. For those on Windows, the Windows Subsystem for Linux (WSL) is your best bet.
- A code/text editor to write and refine your ‘bash if else’ scripts.
Waarom zou je bash if else verklaringen gebruiken?
Waarom worden conditionele verklaringen zo gewaardeerd in Bash scripting? Simpel gezegd, ze geven je scripts beslissingsvermogen op basis van vooraf gedefinieerde voorwaarden.
Bijvoorbeeld, je kunt ‘bash if else’ gebruiken om te controleren of een bestand bestaat voordat je probeert het te verwijderen. Als alternatief wil je misschien controleren of een gebruiker over de vereiste rechten beschikt voordat je ze toegang geeft tot een bron.
Het injecteren van scripts met ‘bash if else’-structuren vergroot niet alleen hun flexibiliteit, maar ook hun kracht. Stel je een script voor dat is ontworpen om alle bestanden in een map te verwijderen. Door ‘bash if else’ te gebruiken, kun je chirurgisch alleen die bestanden verwijderen die ouder zijn dan 30 dagen, terwijl de rest behouden blijft.
Dieper ingaan op de ‘bash if else’-verklaring
Lat…
Op zijn kern is de ‘bash if else’-verklaring een toegangspoort om voorwaardelijke instructies in je Bash-scripts in te voegen. Bekijk de elegante syntaxis hieronder:
- Het begint met het if-sleutelwoord, gevolgd door de voorwaarden ingesloten binnen [[ ]]. Hierna wordt de code die zich binnen de ‘bash if else’-verklaring bevindt, uitgevoerd, eindigend met het sleutelwoord fi.
- Het sleutelwoord then scheidt de voorwaarde van de acties (of instructies) die worden uitgevoerd wanneer de voorwaarden zijn vervuld. Dit actieblok kan meerdere regels beslaan, gescheiden door puntkomma’s (;).
Stel je voor dat je een inlogsysteem script. Het vraagt om de juiste gebruikersnaam voordat toegang wordt verleend:
1. Start je terminal en maak een nieuw bestand bash_if_demo.sh met behulp van je favoriete teksteditor. Dit wordt onze speeltuin om ‘bash if else’-verklaringen te begrijpen.
2. Plaats het onderstaande ‘bash if else’-voorbeeld in je bash_if_demo.sh-bestand. Zodra het is ingevoegd, sla je de wijzigingen op en verlaat je de editor.
Het voorbeeld ‘bash if else’-script vraagt om een gebruikersnaam. Als de verwachte gebruikersnaam wordt ingevoerd, wordt er een welkomstbericht weergegeven, aangevuld met de huidige datum en tijd.
Het bijhouden van een record van de datum en tijd van pogingen tot toegang door gebruikers kan van onschatbare waarde zijn voor toekomstige analyses.
De introductieregel #!/bin/bash (algemeen bekend als shebang) geeft het systeem aan welke interpreter moet worden gebruikt voor het verwerken van de daaropvolgende code in het script. Hier is ‘bash’ onze gekozen interpreter.
3. Laten we nu onze ‘bash if else’-script op de proef stellen. Voer de onderstaande opdracht uit:
Onthoud, ongeacht welke variant van de Bash-shell je gebruikt, voeg ‘bash’ toe als voorvoegsel aan de naam van je script. Dit zorgt ervoor dat het systeem Bash gebruikt voor de uitvoering van het script.
Voer “ATA” in en druk op Enter. Het resultaat zou als volgt moeten zijn:

Als je iets anders invoert dan “ATA,” zal het welkomstbericht ontbreken in de uitvoer. Alleen de huidige datum en tijd zullen worden getoond. Dit gedrag is te danken aan de ‘bash if else’-verklaring die controleert op een exacte overeenkomst met de waarde in de $NAME-variabele.
Houd er rekening mee dat ‘bash if else’-verklaringen hoofdlettergevoelig zijn. Daarom zijn “ata,” “aTa,” “Ata,” enzovoort, verschillend van “ATA.”

Test consequent uw ‘bash if else’-scripts met verschillende invoer. Dit zorgt ervoor dat de scripts werken zoals verwacht.
Dieper graven: Geneste ‘bash if else’-verklaringen
Je hebt al de basisbeginselen begrepen van het maken van ‘bash if else’-verklaringen. Hoewel deze basiskennis voldoende is voor eenvoudige taken, vereisen ingewikkelde scripts vaak geavanceerde constructies. Hier komen geneste ‘bash if else’-verklaringen in beeld. In feite is het een ‘if’-verklaring met daarin één of meerdere extra ‘if’-verklaringen.
De structuur hieronder illustreert de basis-syntax voor geneste ‘bash if else’-verklaringen. Hier omvat de buitenste if [[ voorwaarden ]]
-clausule code die alleen wordt uitgevoerd bij vervulling van de voorwaarde. In onze context is de geneste code een andere ‘if’-verklaring.
if [[ voorwaarden ]]
– Dit vertegenwoordigt de externe ‘bash if else’-verklaring. De geneste code (nog een ‘if’-verklaring) wordt alleen uitgevoerd als de opgegeven voorwaarde waar is.if [[ voorwaarde2 ]]
– Dit vertegenwoordigt de interne ‘bash if else’-clausule. Het bevat code die wordt uitgevoerd als en alleen als beide voorwaarden zijn voldaan.
Laten we dieper ingaan. We zullen ons vorige ‘bash if else’-voorbeeld verbeteren door nu een if
-verklaring toe te voegen die vraagt naar een wachtwoord:
1. Stel eerst een nieuw bestand in met de titel bash_nested_if_demo.sh met behulp van je favoriete teksteditor.
2. Verplaats de ‘bash if else’-code hieronder naar het bestand bash_nested_if_demo.sh, sla je wijzigingen op en sluit de editor.
Deze ‘bash if else’-code vraagt zowel om een naam als om een wachtwoord. Als de voorwaarden voor de naam en het wachtwoord overeenkomen, wordt een specifieke boodschap weergegeven. Als er geen overeenkomst is, wordt alleen de huidige datum en tijd weergegeven.
3. Nu, laten we dit ‘bash if else’-script in actie zien. Voer de onderstaande opdracht uit:
Voor optimale resultaten, voer ATA in als de gebruikersnaam en pwd123 als het wachtwoord.

Als uw invoer afwijkt van “ATA” of “pwd123”, ontvangt u alleen feedback over de huidige datum en tijd. Dit komt doordat de ‘bash if else’-structuur vereist dat aan beide voorwaarden wordt voldaan.

Het decoderen van ‘Bash If Else’-verklaringen
‘Bash if else’-verklaringen zijn hoekstenen in Bash-scripting, die beslissende mogelijkheden bieden voor uw scripts. Het is echter cruciaal om te begrijpen dat het gebruik van ‘if’-verklaringen niet zonder nadelen is.
Het grootste probleem is dat overmatig vertrouwen op ‘if’ je code rommelig kan maken, waardoor het saai en uitdagend wordt, vooral wanneer er meerdere geneste ‘if’-verklaringen in het spel zijn. Dergelijke scripts lopen het risico “spaghetticode” te worden, gekenmerkt door verminderde leesbaarheid en verhoogde complexiteit.
Dus, hoe stroomlijn je je ‘bash if else’ script om begrijpelijk te blijven? Kies voor ‘if else’ verklaringen in plaats van een hoop geneste ‘if’-verklaringen. Het ‘else’ trefwoord biedt het gemak om een codeblok te specificeren dat wordt uitgevoerd als de ‘if’-voorwaarde niet wordt voldaan.
Voor een duidelijker perspectief, overweeg de syntaxis voor ‘Bash If Else’ hieronder, waar:
if [[ voorwaarden ]]
– Hier omvat de ‘bash if else’ verklaring de code (statement1
) die alleen wordt geactiveerd wanneer de opgegeven voorwaarde geldig is.else
– Dit maakt deel uit van de ‘bash if else’ structuur. Deelse
-verklaring omvat de code (statement2
) die wordt uitgevoerd wanneer de voorwaarde in de voorafgaandeif
-clausule niet wordt voldaan.
Stel je voor dat je een eenvoudig ‘bash if else’ spel maakt waarbij het systeem een willekeurig nummer van de gebruiker verwacht:
1. Begin met het maken van een nieuw bestand met de naam bash_if_else_demo.sh.
2. Integreer de volgende ‘bash if else’-code in je bash_if_else_demo.sh bestand, sla de wijzigingen op, en sluit vervolgens af.
De onderliggende ‘bash if else’ code vraagt de gebruiker om hun geluksgetal. Als de invoer even is, wordt het bericht ‘Je hebt gewonnen!’ weergegeven. Daarentegen zorgt een oneven getal voor de uitvoer ‘Je hebt verloren!’.
3. Om het ‘bash if else’-script in actie te zien, voer je de onderstaande opdracht uit:
Na het invoeren van een even getal zou je de melding “Je hebt gewonnen met ‘bash if else’!” moeten zien. Als je daarentegen een oneven getal invoert, zou je de feedback “Je hebt verloren met ‘bash if else’!” moeten krijgen.

Om het ‘bash if else’-script te verrijken, overweeg om een segment toe te voegen dat bepaalt of de gebruiker een letter of een ander teken invoert in plaats van een getal.
Decoderen van ‘Bash If Else’ en Case Statements
Op dit punt heb je een paar methoden verkend om beslissingen te nemen in je Bash-scripts, met name ‘bash if else’-verklaringen. Maar Bash biedt nog een andere manier om beslissingen te nemen – de case
-verklaring.
Vergelijkbaar met de ‘bash if else’, is de case
-verklaring bedreven in het specificeren van code-reeksen die moeten worden uitgevoerd op basis van gespecificeerde voorwaarden. Een opmerkelijk voordeel van de case-verklaring is de eenvoud en duidelijkheid, vooral in vergelijking met geneste ‘bash if else’-scenario’s.
Om volledig grip te krijgen op de alternatieven voor ‘bash if else’, laten we in de syntaxis van de case-verklaring duiken:
case $VAR in
– Dit gedeelte van de case-structuur evalueert de variabele$VAR
tegen gedefinieerde patronen totdat er een overeenkomst is.patroon1)
enpatroon2)
– Dit zijn de criteria waartegen getest wordt, en zodra een overeenkomst is gedetecteerd, wordt de overeenkomstige code (statement1
ofstatement2
) geactiveerd.esac
– Beëindigt de case-structuur.
Stel je voor dat je een ‘bash if else’-script ontwerpt waarin gebruikers hun landnamen invoeren, en als reactie daarop toont het script de overheersende taal van dat land.
1. Begin met het genereren van een bestand met de naam bash_case_demo.sh.
2. Neem de ‘bash if else’-code hieronder op in je bestand bash_case_demo.sh, sla vervolgens op en sluit af.
Het resulterende ‘bash if else’-script zal de gebruiker vragen naar de naam van hun land en, op basis van de ‘case’-patronen, de primaire taal afdrukken die in het genoemde land wordt gesproken.
3. Om dit ‘bash if else’ script zelf te ervaren, gebruik de volgende opdracht:
Je zult merken dat het script nauwkeurig de taal accentueert volgens het door de gebruiker gekozen land.
Als het opgegeven land niet overeenkomt met de opgegeven patronen, wordt het standaard (*) patroon geactiveerd, resulterend in de uitvoer “onbekend.”

Afronding van Bash-voorwaardelijke verklaringen
In deze gids ben je begonnen aan de reis om ‘bash if else’ en andere voorwaardelijke verklaringen in Bash te begrijpen. Van de eenvoudige ‘if’-verklaring tot de ingewikkelde ‘if-else’ en ‘case’-verklaringen, ben je nu uitgerust met essentiële tools voor effectief Bash-scripting.
Met deze fundamenten van ‘bash if else’ in je achterzak kun je Bash-scripts efficiënter construeren, waardoor de kans op fouten wordt verminderd.
Maar onthoud, dit is slechts het topje van de ijsberg. Bash biedt een uitgebreid scala aan voorwaardelijke verklaringen. Overweeg misschien om dieper in te gaan op de Bash elif-verklaring en &&, OR en || operatoren voor diepgaandere inzichten. Met toewijding zal het beheersen van Bash-scripting binnenkort binnen handbereik zijn!