• Productupdates

Hoe gebruik je Bash if-statements? (Voorwaardelijke logica in Bash)

Hoe gebruik je Bash if-statements? (Voorwaardelijke logica in Bash)

Inhoudsopgave

Wat zijn Bash if-statements? (if-statement in Bash)

Bij het schrijven van shellscripts zijn Bash if-statements onmisbaar voor het nemen van beslissingen. Ze zorgen ervoor dat scripts verschillend kunnen reageren op basis van voorwaarden zoals gebruikersinvoer, resultaten van commando’s of de toestand van het systeem.

De basisstructuur van een Bash if-statement begint met het sleutelwoord if, gevolgd door een voorwaarde, het sleutelwoord then en de commando’s die moeten worden uitgevoerd als de voorwaarde waar is. Om meer mogelijkheden te kunnen afhandelen, kun je een `elif` toevoegen voor extra controles en een `else` als uitwijkoptie wanneer aan geen enkele voorwaarde wordt voldaan.

Door `if`-statements te combineren met andere Bash-functies, kun je krachtige, flexibele scripts maken die een breed scala aan taken automatiseren.

Wat is Bash-scripting?

Voordat we ons verdiepen in Bash-scripts, gaan we eerst bekijken wat Bash-scripting precies is.

Stel je voor dat je computer een fabriek is met werknemers die verschillende taken uitvoeren — onderdelen assembleren, producten verpakken of materialen sorteren. Bash-scripting is te vergelijken met het opstellen van een handleiding die elke werknemer duidelijke instructies geeft over hoe hij zijn taken in de juiste volgorde moet uitvoeren. In plaats van elke werknemer telkens afzonderlijk te vertellen wat hij moet doen, geef je hen gewoon de handleiding — het Bash-script — en volgen ze die automatisch.

Wanneer je het script uitvoert, fungeert de Bash-shell als de fabrieksmanager, die de werknemers stap voor stap begeleidt en ervoor zorgt dat elke taak correct wordt voltooid. Dit helpt je bij het automatiseren van repetitieve processen zoals gegevensanalyse, het ordenen van bestanden of het beheren van systeemconfiguraties.

Voordat de fabriek echter in bedrijf kan gaan, moet alles op zijn plaats zijn — materialen moeten klaarstaan, machines moeten gekalibreerd zijn en werknemers moeten op de hoogte zijn van hun taken. Op dezelfde manier moet je script, om te kunnen draaien, correct zijn ingesteld — een cruciale stap is ervoor zorgen dat het de juiste rechten heeft om uitgevoerd te worden, zodat alle systemen klaar zijn voor gebruik.

Hoe werken Bash if-statements?

Bij het schrijven van Bash-scripts spelen if-statements, en met name de bash if-statement, een belangrijke rol bij het sturen van het gedrag van een script op basis van bepaalde voorwaarden. Ze stellen je script in staat om beslissingen te nemen en verschillende uitvoeringspaden te kiezen, afhankelijk van de resultaten van een test.

Wanneer een if-statement wordt aangetroffen, controleert Bash of een bepaalde voorwaarde waar is. Als dat het geval is, worden de commando’s binnen het then-blok uitgevoerd.

Maar wat gebeurt er als de voorwaarde onwaar is? Het script controleert dan de eventuele volgende elif-voorwaarden (else-if). Als een daarvan waar blijkt te zijn, worden in plaats daarvan de bijbehorende commando’s uitgevoerd.

En als aan geen van de voorwaarden, noch if noch elif, wordt voldaan, controleert Bash of er aan het einde een else-blok staat. Indien aanwezig, voert het de commando’s in dat blok uit als terugvaloptie.

In wezen maakt de bashif-instructie het mogelijk om beslissingen te nemen binnen je script. De voorwaarde die wordt getest, kan van veel factoren afhangen, zoals de waarde van een variabele, het resultaat van een vergelijking of het al dan niet slagen van een commando.

Door gebruik te maken van if, elif en else kun je logica in je scripts inbouwen die zich aanpast aan verschillende situaties, waardoor ze flexibeler en intelligenter worden.

De syntaxis van de Bash if-instructie begrijpen

Bash-scripting volgt een specifieke reeks regels, ook wel syntaxis genoemd, die bepaalt hoe commando’s en scripts zijn gestructureerd. Vertrouwd raken met deze syntaxis is essentieel voor het schrijven van functionele en efficiënte Bash-scripts. Laten we de belangrijkste elementen eens onder de loep nemen:

Kernonderdelen van de syntaxis van de Bash if-instructie

Commando’s: Dit zijn de uitvoerbare acties — hetzij ingebouwd in de shell, hetzij externe programma’s — die taken uitvoeren. Je zult deze commando’s het vaakst gebruiken in je scripts.

Argumenten: Argumenten geven aanvullende informatie aan commando’s en helpen bepalen hoe deze zich moeten gedragen. Je kunt ze zien als de details waarmee je de uitvoering van een commando nauwkeurig afstemt.

Variabelen: Variabelen worden gebruikt om gegevens op te slaan en te bewerken. Ze maken je scripts dynamisch doordat je waarden kunt hergebruiken en aanpassen.

Omleiding: Met omleiding kun je bepalen waar de uitvoer van een commando naartoe gaat, of dat nu een bestand is, een ander programma of zelfs de prullenbak. Het helpt ook bij het beheren van invoerbronnen en foutmeldingen.

Pipes (|): Een pipe verbindt de uitvoer van het ene commando rechtstreeks met de invoer van het andere. Dit maakt krachtige, aaneengeschakelde bewerkingen in één enkele regel mogelijk.

Controleconstructies: Deze sturen de flow van het script. Lussen, voorwaardelijke constructies en functies vallen allemaal onder deze categorie. Ze zijn essentieel voor het inbouwen van logica in je scripts.

Opmerkingen: Opmerkingen (gemarkeerd met #) zijn aantekeningen in je code die de shell negeert. Gebruik ze om uit te leggen wat je code doet — handig bij het opsporen van fouten of bij samenwerking met anderen.

Basisstructuur van een if-statement in Bash

Zo wordt een if-statement doorgaans geschreven in Bash:

if [ voorwaarde ]
then
commando1
commando2
...
elif [ andere_voorwaarde ]
then
commandoA
commandoB
...
else
fallbackcommando1
fallbackcommando2
...
fi

Hoe werken if-statements in Bash?

if [ voorwaarde ]: Deze regel controleert een voorwaarde. Als deze waar is, voert het script de commando’s uit die volgen in het then-blok.

elif (else if): Als de eerste if-voorwaarde niet klopt, controleert Bash de elif-voorwaarde. Als die waar is, voert het de bijbehorende commando’s uit.

else: Als noch de if- noch de elif-voorwaarde waar is, valt het script terug op het else-blok en voert het die commando’s uit.

fi: Dit sleutelwoord markeert het einde van het Bash if-statementblok — het staat letterlijk voor „if“ in omgekeerde volgorde.

Belangrijke regels voor Bash if-voorwaarden die je moet kennen

Bij het schrijven van Bash if-statements met voorwaardelijke logica is het belangrijk om een paar belangrijke regels te volgen om frustrerende fouten te voorkomen. Hier zijn drie fundamentele werkwijzen die je zullen helpen om duidelijkere, betrouwbaardere Bash-voorwaarden te schrijven.

1. Gebruik altijd spaties binnen vierkante haakjes

Bij het schrijven van Bash-scripts is spatiëring cruciaal. Wanneer je vierkante haakjes [ ] gebruikt voor voorwaarden, zorg er dan voor dat je spaties plaatst tussen de haakjes en de voorwaarde zelf.

Fout:

if [$foo -ge 3]; then

Juist:

if [ $foo -ge 3 ]; then

Waarom dit belangrijk is: Bash interpreteert voorwaarden op basis van een specifieke syntaxis. Zonder de juiste spatiëring leest het de uitdrukking verkeerd en geeft het een foutmelding of gedraagt het zich onvoorspelbaar.

2. Gebruik puntkomma’s of regeleinden vóór sleutelwoorden in een bash if-statement

Controle-sleutelwoorden zoals then, else, elif en fi moeten ofwel op een nieuwe regel beginnen, ofwel op een puntkomma volgen. Het overslaan van deze opmaak leidt tot syntaxfouten.

Fout:

if [ $foo -ge 3]then

Juist:

if [ $foo -ge 3 ]; then

Tip: Door de voorwaarde af te sluiten met een puntkomma of een regeleinde vóór ‘then’, zorg je ervoor dat de shell het script correct interpreteert.

3. Zet tekenreeksvariabelen tussen aanhalingstekens in Bash if-statements of voorwaarden

Zet stringvariabelen altijd tussen dubbele aanhalingstekens wanneer je ze in voorwaardelijke instructies vergelijkt. Dit voorkomt problemen als de string spaties of andere speciale tekens bevat.

Fout:

if [ $username == “admin” ]; then

Juist:

if [ “$username” == “admin” ]; then

Reden: Door variabelen tussen aanhalingstekens te plaatsen, voorkom je het opsplitsen van woorden en onverwachte fouten, vooral bij gebruikersinvoer of gegevens met spaties.

Uitleg over de verschillende syntaxtypen van de if-instructie in Bash

Bij het schrijven van Bash-scripts zijn er verschillende syntaxisvormen beschikbaar voor het schrijven van voorwaardelijke instructies, afhankelijk van wat je wilt controleren: bestanden, tekenreeksen, getallen of complexe uitdrukkingen. Laten we de belangrijkste typen eens doornemen:

Syntaxis met enkele haakjes ([ ... ])

Dit is de traditionele manier om voorwaarden in Bash te schrijven en ondersteunt controles op bestanden, tekenreeksen en getallen.

Bestandscontroles met een bash if-instructie

Wordt gebruikt om eigenschappen van bestanden te bepalen. Laten we de vlag -d gebruiken om te controleren of een bestand een map is in plaats van een symbolische link:

if [ -d myfolder ]; then
echo “Het bestand is een map.”
Fi
  • -d controleert of het opgegeven pad (in dit geval myfolder) een map is.
  • Als de voorwaarde waar is, geeft het script weer dat het een map is.

Vergelijkingen van tekenreeksen met behulp van de Bash if-instructie:

Handig om te testen of een tekenreeks leeg is of overeenkomt met een andere tekenreeks.

username=“admin”
status=“inactive”
if [ -n “$username” ]; then
echo “Gebruikersnaam is opgegeven.”
fi
if [ “$status” != ‘active’ ]; then
echo “Status is niet actief.”
fi
  • -n “$username” controleert of de tekenreeks niet leeg is.
  • “$status” != “active” controleert of de tekenreeksvariabele status niet gelijk is aan ‘active’.

Numerieke voorwaarden met behulp van de Bash if-instructie:

Wordt gebruikt om gehele getallen te vergelijken.

if [ $num -lt 10 ]; then
echo “Het getal is kleiner dan 10.”
fi

Operatoren zoals -lt, -gt en -eq worden gebruikt voor vergelijkingen.

Syntaxis met dubbele haakjes ([[ ... ]])

Dit is een verbeterde versie van de syntaxis met enkele haakjes, met extra functies en flexibiliteit.

Wildcard-matching:

Maakt het mogelijk patronen te matchen met behulp van *, vergelijkbaar met wildcards.

if [[ “$text” == *match* ]]; then
echo "De tekenreeks bevat ‘match’. “
fi

Voorkomt woordopsplitsing:

Je hoeft variabelen met spaties niet tussen aanhalingstekens te plaatsen — dit wordt veilig verwerkt.

if [[ $phrase != ‘hello’ ]]; then
echo ”De zin is niet ‘hello’."
fi

Geen bestandsnaamuitbreiding:

Patronen zoals *.sh worden niet uitgebreid tot bestandsnamen. Ze worden letterlijk behandeld.

Een controle als [[ -a *.sh ]] werkt dus niet op dezelfde manier als buiten dubbele haakjes.

Voorwaarden combineren:

Logische operatoren zoals && en || kunnen worden gebruikt om meerdere controles te combineren.

if [[ $num -eq 3 && $text == “yes” ]]; then
echo “Aan de voorwaarden is voldaan.”
fi

Reguliere expressies:

Maakt het matchen van regex-patronen mogelijk met behulp van =~.

if [[ “$input” =~ ^[0-9]+$ ]]; then
echo “De invoer is een getal.”
fi

Syntaxis met dubbele haakjes ((( ... )))

Deze syntaxis is speciaal ontworpen voor numerieke evaluaties en lijkt op die van traditionele programmeertalen.

Rekenkundige vergelijkingen:

Wordt gebruikt om numerieke uitdrukkingen te evalueren met bekende symbolen.

if (( num <= 6 )); then
echo “Het getal is 6 of kleiner.”
fi

Ondersteunde logische operatoren:

Ondersteunt && en ||, waardoor samengestelde voorwaarden gemakkelijker te lezen zijn.

if (( num > 0 && num < 50 )); then
echo “Het getal ligt tussen 1 en 49.”
fi

Deze syntaxis is in wezen een overzichtelijkere en expressievere manier om wiskundige logica in shellscripts uit te voeren.

Inzicht in Bash if-statements of Bash-voorwaarden (if-statement in bash)

Bash-scripting biedt meerdere manieren om beslissingen te nemen. Met deze hulpmiddelen kun je bepalen hoe je script zich onder verschillende omstandigheden gedraagt. In deze handleiding verkennen we veelvoorkomende soorten voorwaardelijke statements, beginnend bij de eenvoudigste en vervolgens naar meer geavanceerde structuren.

Basis if-statement in Bash

Met de basis if-statement kunt u een voorwaarde controleren en bepaalde commando’s alleen uitvoeren als de voorwaarde waar is.

Syntaxis:

if [ voorwaarde ]; then
# commando’s die moeten worden uitgevoerd als de voorwaarde waar is
fi

Voorbeeld:

if [ -f “notes.txt” ]; then
echo “notes.txt bestaat in de map.”
fi

In dit geval controleert het script of notes.txt bestaat als een gewoon bestand. Als dat het geval is, wordt er een bericht weergegeven.

Geneste if-instructie (bash if met meerdere voorwaarden)

Een geneste if is simpelweg een if-instructie die in een ander if-blok is geplaatst. Deze structuur maakt diepere beslissingsbomen mogelijk, waarbij een tweede voorwaarde alleen wordt gecontroleerd als de eerste waar is.

Syntaxis:

if [ voorwaarde1 ]; then
if [ voorwaarde2 ]; then
# opdrachten die moeten worden uitgevoerd als zowel voorwaarde1 als voorwaarde2 waar zijn
fi
fi

Voorbeeld:

if [ -d “projects” ]; then
if [ -w ‘projects’ ]; then
echo “De map ‘projects’ bestaat en is beschrijfbaar.”
fi
fi

Hier controleert het script eerst of de map ‘projects’ bestaat, en vervolgens of deze schrijfrechten heeft.

If-Else-instructie

Met deze constructie kun je kiezen tussen twee reeksen acties: één voor wanneer een voorwaarde waar is en één voor wanneer deze onwaar is.

Syntaxis:

if [ voorwaarde ]; then
# indien waar
else
# indien onwaar
fi

Voorbeeld:

if [ -n “$username” ]; then
echo “Hallo, $username!”
else
echo “Gebruikersnaam is niet ingesteld.”
fi

Als de variabele username een waarde heeft (d.w.z. niet leeg is), wordt er een begroeting weergegeven. Anders wordt er een standaardbericht weergegeven.

If-Elif-Else-instructie (bash if-instructie)

Gebruik deze instructie wanneer je meerdere voorwaarden achter elkaar moet evalueren. Zodra één voorwaarde waar is, wordt het bijbehorende blok uitgevoerd en worden de overige overgeslagen.

Syntaxis:

if [ voorwaarde1 ]; then
# blok 1
elif [ voorwaarde2 ]; then
# blok 2
else
# standaardblok
fi

Voorbeeld:

if [ “$day” == “Monday” ]; then
echo “Het begin van de werkweek!”
elif [ “$day” == ‘Friday’ ]; then
echo “Het weekend komt eraan!”
else
echo “Het is gewoon weer een dag.”
fi

Hier reageert het script verschillend, afhankelijk van welke dag het is.

Case-instructie

De case-structuur is ideaal wanneer je verschillende acties wilt uitvoeren, afhankelijk van de waarde van één variabele — vergelijkbaar met een switch-instructie in andere programmeertalen.

Syntaxis:

case $variabele in
patroon1)
# commando’s voor patroon1
;;
patroon2)
# commando’s voor patroon2
;;
*)
# standaardopdrachten
;;
esac

Voorbeeld:

read -p “Voer een cijfer in: ” grade
case $grade in
A)
echo “Uitstekend werk!”
;;
B)
echo “Goed gedaan!”
;;
C)
echo “Je bent geslaagd.”
;;
*)
echo “Onbekend cijfer.”
;;
esac

Afhankelijk van de ingevoerde waarde geeft het script een ander bericht weer. Als de invoer niet overeenkomt met een vooraf gedefinieerd cijfer, wordt een standaardreactie weergegeven.

Conclusie

In dit artikel hebben we de basisprincipes van Bash if-statements en hun verschillende vormen onderzocht, waaronder geneste structuren en op case gebaseerde besluitvorming. Deze hulpmiddelen kunnen de duidelijkheid en flexibiliteit van uw Bash-scripts aanzienlijk verbeteren, waardoor u dynamischere en responsievere commandoregelprogramma’s kunt bouwen.

Groeit uw bedrijf uit de mogelijkheden van een VPS? Upgrade dan naar een dedicated server en benut het volledige potentieel van uw online activiteiten. Met BlueServers krijgt u een krachtige, volledig aanpasbare hostingomgeving die is afgestemd op uw prestatie-eisen. Geniet van de vrijheid van een dedicated infrastructuur die is gebouwd met het oog op schaalbaarheid, betrouwbaarheid en volledige controle. Of u nu websites met veel verkeer of resource-intensieve applicaties beheert, of gevoelige gegevens verwerkt: onze dedicated servers bieden de prestaties en beveiliging die uw bedrijf nodig heeft — en dat alles met onbeperkt verkeer. Ontdek het verschil dat een dedicated server kan maken. Bekijk onze pakketten op BlueServers.com en til uw infrastructuur naar een hoger niveau.

Share

Over de auteurs


scale 1
Ready to scale?

Start for free and unlock high-performance infrastructure with instant setup.

Get started arrow button

Help ons verbeteren — deel je feedback

Jouw mening helpt ons een betere service te bouwen.