Contents

5 Bash Script-voorbeelden om Linux te leren programmeren

Snelle koppelingen

⭐ Hello World afdrukken in Bash

⭐ Een directory maken door invoer te lezen

⭐ Een directory maken met behulp van commandoregelargumenten

⭐ Verwijder een bestand met behulp van een Bash-functie

⭐ Maak een basiscalculator voor rekenkundige berekeningen

Bash scripting is een wijdverbreid en gemakkelijk toegankelijk middel waarmee gebruikers hun Linux-gebaseerde computers kunnen programmeren.gebaseerde computers kunnen programmeren. Het aanbieden van rudimentaire scriptvoorbeelden zal het begrip van de onderliggende processen vergemakkelijken en een inleiding geven tot de fundamentele principes van het programmeren met Bash.

Hoe Hello World afdrukken in Bash

De veelgeprezen “Hello World”-demonstratie dient inderdaad als een uitstekende introductie tot de fijne kneepjes van elke coderingstaal, inclusief de veelgeprezen scripttaal Bash.

Om een gepolijste uitvoer in Bash te genereren, kan gebruik worden gemaakt van een beknopte en expressieve opdrachtregel-syntaxis die gebruik maakt van ingebouwde commando’s en parameters. Voor het afdrukken van “Hello World” wordt het hulpprogramma echo aangeroepen met de juiste argumenten om tekst op het terminalscherm weer te geven.

Open een geschikte teksteditor, zoals Microsoft Word of Google Docs, en begin te werken aan een nieuw document dat de volgende regels broncode bevat:

⭐ De eerste regel van je Bash scripts zou er altijd zo uit moeten zien:

 #!/bin/bash 

De shebang richtlijn, aangeduid door het symbool “#!” gevolgd door een pad naar een uitvoerbaar binair bestand en geïnterpreteerd door de loader van het besturingssysteem, dient als een kritisch onderdeel bij het bepalen van de juiste interpreter voor het uitvoeren van een bepaald script. In het bijzonder wanneer het shebang commando “#!/bin/bash” in een scriptbestand wordt aangetroffen, roept het besturingssysteem de Bash interpreter aan om het script dienovereenkomstig uit te voeren.

⭐ Elke regel die begint met een # symbool is een commentaar. De shebang regel is een speciaal geval, maar je kunt je eigen commentaar gebruiken om je code uit te leggen. Voeg een commentaar toe op regel 2, bijvoorbeeld :

 # Print some text from a bash script 

⭐ Je kunt afdrukken naar de standaarduitvoer met het echo commando, gevolgd door de waarde die je wilt afdrukken. Voeg het volgende toe op regel 3:

 echo "Hello World" 

Wanneer je een script maakt in Bash, is het aanbevolen om een naamgevingsconventie aan te houden door een “.sh” bestandsextensie toe te voegen aan de bestandsnaam van het script. Hoewel dit niet strikt noodzakelijk is, kan het gebruik van een dergelijke conventie helpen om scripts gemakkelijker te identificeren en organiseren.

⭐ Om je script uit te voeren, moet je het bestand uitvoerbaar maken.Gebruik het commando chmod (“change mode”) samen met het argument \+x (“executable”) en de naam van je shellscript:

 chmod \\+x hello_world.sh 

⭐ Gebruik dit commando om het script uit te voeren vanuit zijn directory:

 ./hello_world.sh 

⭐ Wanneer het script wordt uitgevoerd, wordt de tekst “Hello World” in de terminal afgedrukt: /nl/images/screenshot-2024-01-09-at-13-31-56.png

Een directory maken door invoer te lezen

Het opnemen van de functionaliteit van het uitvoeren van commando’s die gewoonlijk in de terminal worden ingevoerd, zoals het maken van een nieuwe directory via het gebruik van het commando mkdir in een script, is mogelijk door het implementeren van aangepaste scripts.

⭐ Begin met dezelfde shebang regel als voorheen:

 #!/bin/bash 

⭐ Vraag de gebruiker om een mapnaam met behulp van het echo commando als voorheen:

 echo "Enter new directory name:" 

⭐ Gebruik het ingebouwde read commando om gebruikersinvoer op te halen. Het enkele argument benoemt een variabele waar de commandoregel de invoer in opslaat:

 read newdir 

⭐ Als je de waarde wilt gebruiken die is opgeslagen in een variabele, zet dan een dollarteken ( $ ) voor de naam. Je kunt de inhoud van de invoervariabele als argument doorgeven aan het commando mkdir om een nieuwe map aan te maken:

 mkdir $newdir 

⭐ Wanneer je dit script uitvoert, vraagt het om invoer. Voer een geldige mapnaam in en je zult zien dat het script deze aanmaakt in je huidige map: /nl/images/screenshot-2024-01-09-at-13-39-11.png

Een map maken met behulp van commandoregelargumenten

In plaats van het handmatig invoeren van inputs, staan veel Linux commandoregelprogramma’s toe dat argumenten worden gegeven bij het uitvoeren om hun werking te beïnvloeden.

Binnen het bereik van je script is het mogelijk om variabelen $1 tot en met $9 te gebruiken om respectievelijk de waarden van argumenten één tot en met negen weer te geven. De specifieke toepassing of het doel waarvoor deze variabelen worden gebruikt, kan variëren afhankelijk van de vereisten van de gegeven taak.

⭐ Maak een map met de opdracht mkdir uit het vorige voorbeeld. Gebruik deze keer echter de ingebouwde variabele $1:

 #!/bin/bash
mkdir $1 

⭐ Voer het script uit, deze keer met de gekozen naam van een nieuwe map als argument:

 ./arg_dir.sh Test 

Als het script wordt uitgevoerd zonder invoer, kan er een foutmelding verschijnen die begint met “mkdir”.

/nl/images/screenshot-2024-01-09-at-13-42-32.png

Bij het ontbreken van commandoregelargumenten zal de eerste positionele parameter ($1) een lege waarde opleveren. Bij het uitvoeren van het commando “mkdir” binnen een script, wordt er geen argument aan het commando doorgegeven, waardoor het commando “mkdir” een foutmelding geeft.Om dit probleem te omzeilen, kan men dergelijke voorwaarden zelf controleren en in plaats daarvan een gebruiksvriendelijkere foutmelding geven.

⭐ Begin zoals altijd met de shebang regel:

 #!/bin/bash 

⭐ Controleer voordat je mkdir aanroept op een leeg eerste argument (dus geen argumenten). Je kunt dit doen met de if-instructie van Bash, die code uitvoert op basis van een voorwaarde:

 if ["$1" = ""]; then 

⭐ Als het eerste argument leeg is, druk dan een fout af en verlaat je script:

     echo "Please provide a new directory name as the first argument"
    exit 

⭐ Het ietwat vreemde sleutelwoord “fi” (“if” omgekeerd) geeft het einde aan van een if-instructie in Bash:

 fi 

⭐ Je script kan nu verder gaan zoals voorheen, om het geval af te handelen wanneer er een argument aanwezig is:

 mkdir $1 

Bij het uitvoeren van de bijgewerkte iteratie van het huidige softwareprogramma is het noodzakelijk dat alle vereiste invoerparameters worden opgegeven; als dit niet gebeurt, wordt er een waarschuwing gegenereerd die de gebruiker informeert over deze nalatigheid.

/nl/images/screenshot-2024-01-09-at-13-49-38.png

Een bestand verwijderen met een Bash-functie

Als je repetitieve code tegenkomt, kan het nuttig zijn om deze in een functie in te kapselen. Hierdoor kan de logica van de functie op elk gewenst punt worden geïmplementeerd door deze eenvoudigweg aan te roepen wanneer dat nodig is.

Zeker, hier is een illustratie van een functie die een opgegeven bestand verwijdert.

⭐ Begin met de shebang-regel:

 #!/bin/bash 

⭐ Definieer een functie door de naam ervan te schrijven, gevolgd door lege haakjes en opdrachten tussen accolades:

 del_file() {
    echo "deleting $1"
    rm $1
} 

Vervolgens kun je de functie aanroepen en de naam van een te verwijderen bestand doorgeven:

 del_file test.txt 

/nl/images/bash-del-file.png

Wanneer een functie wordt aangeroepen, wordt een unieke speciale variabele “$?” toegewezen met de exitcode van de laatste opdracht die is uitgevoerd. Deze exitcode dient als een effectieve manier om fouten te evalueren en kan worden gebruikt om te bepalen of het commando “rm” succesvol is uitgevoerd of niet, zoals in dit voorbeeld wordt gedemonstreerd.

 if [ $? -ne 0 ]; then
    echo "Sorry, could not delete the file"
fi 

/nl/images/bash-del-file-fail.png

Een basiscalculator voor rekenkundige berekeningen maken

De volgende instantie is een voorbeeld van een rudimentair rekenapparaat. Bij uitvoering voert de gebruiker twee getallen in en selecteert een rekenkundige functie om uit te voeren.

Hier is de code voor calc.sh :

 #!/bin/bash

# Take operands as input
echo "Enter first number: "
read a

echo "Enter second number: "
read b

 # Input type of operation
echo "Enter Arithmetic Operation Choice :"
echo "Addition"
echo "Subtraction"
echo "Multiplication"
echo "Division"
read choice

 # calculator operations
case $choice in
  1)
 result=`echo $a \\+ $b | bc`
  ;;

  2)
 result=`echo $a - $b | bc`
 ;;

  3)
 result=`echo $a \* $b | bc`
  ;;

  4)
 result=`echo "scale=2; $a / $b" | bc`
  ;;
esac

echo "Result: $result" 

Overweeg het gebruik van de case expressie in Bash, die dient als een analoge constructie voor het switch statement in verschillende programmeertalen.Dit maakt het mogelijk om de waarde van een parameter te vergelijken met meerdere vooraf bepaalde waarden en vervolgens de bijbehorende functionaliteit uit te voeren op basis van de uitkomst van een dergelijke beoordeling.

Dit script maakt gebruik van het commando bcc om elke rekenkundige bewerking uit te voeren.

/nl/images/bash-calc.png