50% korting alle abonnementen, tijdelijk aanbod. Vanaf $2.48/mo
10 min resterend
Servers & besturingssysteem

Bash if-statement: syntaxis, varianten, toepassingen, commando's en meer!

Pius Bodenmann By Pius Bodenmann 10 minuten lezen Bijgewerkt 28 januari 2024
bash-scripting

In shell scripting spelen Bash if-statements een cruciale rol: ze stellen programmeurs in staat om conditionele uitvoerpaden te maken op basis van verschillende situaties. Kort gezegd stellen if-statements ons in staat beslissingen te nemen binnen Bash-scripts, rekening houdend met factoren zoals testresultaten, gebruikersinvoer of systeemstatus. Het is een manier om door verschillende mogelijkheden te navigeren.

Bij Bash-scripting volgt een if-statement een vaste structuur. Het begint doorgaans met het sleutelwoord "if", gevolgd door de te evalueren conditie, het sleutelwoord "dan", en een of meer commando's die worden uitgevoerd als de conditie waar is.

Voor meer flexibiliteit kan het if-statement ook een optioneel "elif"-statement (else if) bevatten, dat in werking treedt wanneer de eerste conditie onwaar is. Dit stelt je in staat een aanvullende conditie te testen en daar op in te spelen. Daarnaast kan het if-statement een optioneel "else"-statement hebben, dat wordt uitgevoerd als geen van de condities waar is.

Door if-statements te combineren met andere Bash-commando's en functies van shell scripting, kunnen programmeurs geavanceerde scripts schrijven die complexe taken en processen automatiseren. Lees verder voor meer over het Bash if-statement, inclusief de syntax, toepassingen en voorbeelden!

Bash If-Statement: Syntax

Bash-syntax verwijst naar de regels die de structuur en grammatica bepalen van commando's en scripts die in de Bash-shelltaal zijn geschreven. Bash-syntax omvat een verscheidenheid aan constructies en elementen, zoals:

  • Opdrachten: Dit zijn de afzonderlijke uitvoerbare programma's of ingebouwde shell-commando's die worden gebruikt om specifieke taken uit te voeren. Het grootste deel van je tijd met Bash-programmering breng je door met deze regels.
  • Argumenten: Dit zijn waarden die aan opdrachten worden meegegeven om opties, parameters of invoergegevens te specificeren. Zie het als voorwaarden die bepalen hoe een opdracht wordt uitgevoerd.
  • Variabelen: Dit zijn symbolen die waarden vertegenwoordigen die je kunt toewijzen, aanpassen of gebruiken in expressies. Ze worden vaak gebruikt om te bepalen met welke waarden opdrachten en argumenten werken.
  • Omleiding: Dit is het proces waarbij invoer, uitvoer of foutmeldingen worden doorgestuurd naar of van bestanden, apparaten of andere opdrachten. Zonder dit is de kans groot dat je opdrachten het verkeerde doel bereiken en je code in de war brengen.
  • Buizen: Dit is een mechanisme waarmee de uitvoer van de ene opdracht wordt doorgegeven als invoer aan een andere opdracht. Dit wordt vooral gebruikt voor geavanceerde voorwaardelijke opdrachtrijen in grote programma's en om opdrachten met elkaar te verbinden.
  • Besturingsstructuren: Dit zijn constructies die de uitvoeringsstroom van opdrachten bepalen, zoals lussen, voorwaarden en functies. Een goed begrip van controlestructuren is essentieel voor het schrijven van doordachte opdrachtrijen en voegt extra diepgang toe aan je code.
  • Opmerkingen: Dit zijn annotaties die door de shell worden genegeerd en dienen om code te documenteren of toe te lichten. Ze zijn een belangrijk referentiepunt bij analyse en foutopsporing, vooral in groepsprojecten.

Bash-syntax moet correct zijn geschreven zodat de shell opdrachten kan interpreteren en uitvoeren. Syntaxfouten kunnen leiden tot foutmeldingen of onverwacht gedrag van de shell.

Hier is de Bash if-instructie in de praktijk:

if condition
then
   command1
   command2
   ...
   commandN
elif condition2
then
   commandA
   commandB
   ...
   commandC
else
   commandX
   commandY
   ...
   commandZ
fi

In dit geval verwijst "condition" naar een test die ofwel waar ofwel onwaar oplevert. Als de voorwaarde waar is, worden de opdrachten na het sleutelwoord "then" uitgevoerd. Wil je een extra voorwaarde evalueren? Gebruik dan het sleutelwoord "elif". Daarmee voeg je een alternatieve mogelijkheid toe. Als geen van de voorwaarden waar is, komen de opdrachten na het sleutelwoord "else" in beeld - een soort terugvaloptie. Ten slotte gebruik je het sleutelwoord "fi" om de if-instructie af te sluiten.

Hoe werken Bash-instructies?

Bij Bash-scripting is de if-instructie erg handig om de stroom van een script te sturen op basis van de uitkomst van een voorwaardelijke test. Het doel is een voorwaarde te beoordelen en, als die waar blijkt te zijn, een specifieke reeks opdrachten uit te voeren.

Laten we kijken hoe dit in de praktijk verloopt wanneer een if-instructie wordt gebruikt in een Bash-script. Het script evalueert de voorwaarde in de if-instructie. Als die voorwaarde waar is, worden de opdrachten in het "then"-blok uitgevoerd.

Als de voorwaarde onwaar is, evalueert het script eventuele elif-voorwaarden. Is een van die voorwaarden waar, dan worden de bijbehorende opdrachten in het elif-blok uitgevoerd. Als geen van de voorwaarden in de if- en elif-instructies waar is, voert het script de opdrachten in het else-blok uit - mits dat blok aanwezig is.

De if-instructie is in essentie een manier om beslissingen te nemen binnen een script, waardoor het verschillende uitvoeringspaden kan volgen afhankelijk van de testuitkomst. De test zelf kan rekening houden met verschillende factoren, zoals de uitkomst van een opdracht of de waarde van een variabele.

Bash If-instructie in de praktijk

Genoeg theorie - laten we kijken hoe een Bash if-instructie werkt in een concreet ontwikkelscenario. Hier is een voorbeeld:

#!/bin/bash
# set a variable
x=5
# evaluate the variable
if [ $x -gt 4 ]
then
  echo "x is greater than 4."
else
  echo "x is less than or equal to 4."
fi

In dit voorbeeld evalueert de if-instructie de waarde van variabele x. Als x groter is dan 4, voert het script de opdracht uit om "x is greater than 4" af te drukken. Als x kleiner dan of gelijk aan 4 is, drukt het script "x is less than or equal to 4" af.

Nu je een goed begrip hebt van de eenvoudige Bash if-instructie en hoe die werkt, gaan we dieper in op de varianten en gerelateerde opdrachten: Basic If Statements, Nested If Statements, Bash If Else, If Elif Else en Case Statements - één voor één.

Basisif-instructies

We beginnen met de eenvoudige Bash if-instructie. Die controleert of een voorwaarde waar is en voert een bijbehorend codeblok uit als dat het geval is. Dit is de syntax:

if [ condition ]
then
  commands
fi

In dit geval evalueert het script de voorwaarde. Als die waar is, worden de opgegeven opdrachten uitgevoerd. Als de voorwaarde onwaar is, gaat het script verder met de volgende opdracht zonder het blok in de "then"-sectie uit te voeren.

Geneste If-instructies

Een geneste if-instructie is, zoals de naam al aangeeft, een if-instructie die binnen een andere if-instructie staat. Deze geneste structuur maakt complexere tests en analyses binnen een script mogelijk. Hier is een voorbeeld:

if [ condition1 ]
then
  if [ condition2 ]
  then
    commands
  fi
fi

Zoals je in de opdrachten kunt zien, evalueert het script eerst condition1. Als condition1 waar is, wordt condition2 geëvalueerd. Als condition2 ook waar is, voert het script de benodigde opdrachten uit.

Bash If Else-instructies

Met de Bash if else-instructie kun je binnen je script beslissingen nemen op basis van of een voorwaarde waar of onwaar is, wat geavanceerdere situationele code-uitvoering mogelijk maakt. Dit is de structuur:

if [ condition ]
then
  commands1
else
  commands2
fi

Deze constructie zorgt ervoor dat als de conditie waar is, je script direct "commands1" uitvoert. Als de conditie onwaar is, schakelt het script over naar "commands2".

If Elif Else-statements

Soms moet je rekening houden met meerdere condities en hun bijbehorende uitkomsten. Met de if elif else-statement doe je precies dat. Bekijk de volgende syntax:

if [ condition1 ]
then
  commands1
elif [ condition2 ]
then
  commands2
else
  commands3
fi

Je script evalueert eerst condition1. Als die waar is, voert het onmiddellijk commands1 uit. Is condition1 onwaar, dan gaat je script verder met condition2. Als condition2 waar is, voert het commands2 uit. Zijn zowel condition1 als condition2 onwaar, dan valt het script terug op de standaardoptie: commands3.

Case-instructies

In Bash beschik je over de case-statement, die vergelijkbaar werkt met een switch-statement in andere programmeertalen. Hiermee voer je verschillende sets commando's uit op basis van de waarde van een variabele. Bekijk de structuur:

case expression in
  pattern1)
    commands1;;
  pattern2)
    commands2;;
  pattern3)
    commands3;;
*)
default commands;;
esac

Het script evalueert de expressievariabele en vergelijkt deze met verschillende patronen. Bij een overeenkomst wordt de bijbehorende set commando's uitgevoerd. Wordt er geen overeenkomst gevonden, dan worden de standaardcommando's uitgevoerd. Het asterisk-patroon (*) fungeert als wildcard en matcht alles wat nog niet is afgedekt.

Logische operatoren in Bash

Een ander belangrijk onderdeel van de Bash if-statement zijn de logische operatoren. Met deze operatoren combineer je meerdere condities en neem je beslissingen op basis van de gecombineerde waarheidswaarde. Bash heeft drie primaire logische operatoren voor gebruik in if-statements. Hieronder zie je voorbeelden van de drie belangrijkste typen.

  • Bash AND (&&):
if [ $age -ge 18 ] && [ "$citizen" == "yes" ]; then
  echo "You meet the criteria for voting."
fi
  • Logische of (||):
if [ "$status" == "active" ] || [ "$role" == "admin" ]; then
  echo "Access granted."
fi
  • Niet gelijk aan:
if(( ! $a == "true" )) then 
  echo "a" was initially false. 
else
  echo "a" was initially true. 
fi

Conclusie

In deze blogpost hebben we een introductie gegeven over Bash if-statements en hoe je ze gebruikt. We hebben ook besproken hoe ze je code overzichtelijker en functioneler maken. Door conditionele statements effectief in te zetten, schrijf je krachtige scripts die complexe taken en beslissingslogica aankunnen.

Ben je nieuw in de wereld van Linux? Wij helpen je op weg! Onze Linux VPS is het ideale startpunt voor beginners: eenvoudig in gebruik, zonder aan kracht in te boeten. Met gebruiksvriendelijke interfaces en deskundige ondersteuning haal je het meeste uit een Linux-server. Of je nu een website opzet, applicaties test of de mogelijkheden van Linux verkent, onze Linux VPS biedt een veilige omgeving zonder gedoe. Zet je eerste stappen met vertrouwen, bekijk onze Linux VPS-opties vandaag nog en begin je Linux-avontuur!

Linux VPS Hosting

Kies een economy of premium Linux VPS voor het hosten van je website of remote desktop, tegen de scherpste prijs. VPS draait op Linux KVM voor hogere efficiëntie en maakt gebruik van krachtige hardware met NVMe SSD-opslag voor maximale snelheid.

Meer lezen

Veelgestelde vragen

Kan ik logische operatoren gebruiken in Bash if-statements?

Ja, je kunt logische operatoren gebruiken zoals en en '||' in Bash if-statements. Bijvoorbeeld: if [ $var -gt 0 ] && [ $var -lt 10 ]; then … voert het codeblok uit als $var groter is dan 0 en kleiner dan 10.

Kan ik meerdere condities gebruiken in één if-statement?

Ja, je kunt meerdere condities combineren in één if-statement met logische operatoren zoals -a (AND) of -o (OR) om ze samen te voegen. Bijvoorbeeld: if [ $var -gt 0 -a $var -lt 10 ]; then … voert het codeblok uit als $var is groter dan 0 EN kleiner dan 10.

Kan ik command substitution gebruiken in Bash if-statements?

Ja, je kunt command substitution gebruiken in Bash if-statements door de opdracht te omhullen met $() of backticks (Ik zie dat je een onvolledig fragment hebt ingediend: "). For example," Dit is geen volledige zin of UI-label die kan worden vertaald. Kun je alstublieft de volledige tekst verstrekken die je wilt laten vertalen? if [ $(whoami) == "root" ]; then … voert het codeblok uit als de huidige gebruiker root is.

[[ vs [ vs ( vs ((: Wat is het verschil tussen deze Bash-operatoren?

Kort samengevat: [[ gebruik je voor geavanceerde conditionele tests. [ voor eenvoudige conditionele tests. ( voor het groeperen van subshells en het uitvoeren van opdrachten. (( voor rekenkundige bewerkingen.

 

Delen

Meer van de blog

Verder lezen.

Omslagafbeelding van de beste self-hosted apps die je met Cosmos Cloud kunt draaien, met app-panelen rondom een Cosmos-dashboard.
Servers & besturingssysteem

De beste self-hosted apps voor gebruik met Cosmos Cloud: bestanden, media, wachtwoorden, automatisering en meer!

Maybe je hebt Cosmos Cloud opgezet en wilt weten welke apps er goed bij passen, of je twijfelt nog over Cosmos en wilt eerst zien hoe goed het in jouw workflow past

Nick ZilverNick Zilver 16 minuten lezen
Portainer vs Cosmos Cloud voor het beheren van Docker-apps, met hybride configuratiediagram en neon ops vs. toegangsblokken.
Servers & besturingssysteem

Portainer vs Cosmos Cloud: Wat Past het Beste bij Docker App-beheer

Als je Docker al kent en gewoon op zoek bent naar de overzichtelijkste manier om een groeiende app-stack te draaien, hier is het korte antwoord op Portainer vs Cosmos Cloud. Portainer is de sterkere keuze voor direc

Nick ZilverNick Zilver 14 minuten lezen
Cosmos Cloud vs CasaOS vs Umbrel - afbeelding met drie self-hosted paden in één abstract cloudnetwerk.
Servers & besturingssysteem

Cosmos Cloud vs CasaOS vs Umbrel: Welk Self-Hosted Platform Past bij Jouw Setup?

Het korte antwoord: CasaOS is nog steeds het makkelijkste startpunt, Umbrel voelt het meest verzorgd en overzichtelijk aan, en Cosmos Cloud wordt interessanter zodra je meer controle wilt over doma

Nick ZilverNick Zilver 11 min lezen

Klaar om in te zetten? Vanaf $2.48/mnd.

Onafhankelijke cloud, sinds 2008. AMD EPYC, NVMe, 40 Gbps. 14 dagen geld-terug-garantie.