## Voorbeeld scripts

## 1. Hello world

Het programma "Hello world" is het allereerste programma dat een programmeur schrijft terwijl hij een nieuwe taal leert. Het is een programma dat de " Hello world" als output afdrukt. Je kunt dus als volgt een bestand helloword.sh maken met de editor (vim of nano):

    $  nano helloworld.sh

Kopieer nu onderstaande regels naar 'helloworld.sh' en sla het op.

    #! /bin/bash
    echo "Hello world"

Nu kun je de opdracht uitvoeren:

    $ bash helloworld.sh

Een andere methode is om het bestand eerst uitvoerbaar te maken:

    $ chmod a+x helloworld.sh

En voer nu het bestand uit met behulp van de onderstaande opdracht.

    $ ./helloworld.sh

## 2. Met behulp van Echo Command

Echo- opdracht is de meest voorkomende en meest gebruikte opdracht in Linux. Het wordt gebruikt om tekst af te drukken of uit te voeren in de bash. Het heeft veel opties die verschillende bewerkingen uitvoeren.

Syntaxis:

    echo [options] [ARGUMENTS]

Hier zijn de opties:

`-n` wordt gebruikt om een ​​volgende nieuwe regel te onderdrukken

`-e` wordt gebruikt om backslash-escape tekens te interpreteren

`-E` wordt gebruikt om de interpretatie van de escape-tekens uit te schakelen, en het is de standaardoptie voor het echo-commando.

Maak een nieuw bestand echo.sh en voeg de onderstaande regels eraan toe.

    #! /bin/bash
    echo "Student Linux"
    echo -n "Ik ben een Linux-gebruiker"
    echo -e "\nGood \t Day \t All"

Hier is \n een escape-teken voor een nieuwe regel en \t is een escape-teken voor de horizontale tab.

## 3. Opmerkingen gebruiken

Opmerkingen zijn opmerkingen van een programmeur over het doel van de code of logica. Het is een goede gewoonte om opmerkingen toe te voegen, zodat iedereen in de toekomst code kan begrijpen door alleen opmerkingen te lezen. Opmerkingen maken deel uit van de code, maar worden genegeerd door de compiler. In het bash-script wordt elke regel die begint met # als commentaar beschouwd. Bijvoorbeeld:

    #! /bin/bash

    # dit is een commentaar
    echo "Commentaarvoorbeeld"

Hier is '# dit is een opmerking' een opmerking, en wanneer we deze scriptcompiler uitvoeren, negeert deze de regel.

Opmerkingen kunnen zijn:

1. Enkele regel commentaar
2. Meerdere regels commentaar

We gebruiken '#' voor commentaar van één regel en: 'inhoud' voor commentaar met meerdere regels. Controleer het onderstaande commando voor zowel enkele als talrijke opmerkingen in een bash-script.

    #! /bin/bash
    : '
    Dit script berekent de
    som van 2 en 8.
    '
    ((som=2+8))
    # resultaat is een echo met som
    echo "som is $som"

## 4. Variabelen gebruiken

Variabelen zijn benoemde symbolen die worden gebruikt om waarden tijdelijk op te slaan. Het kan een tekenreeks of numerieke waarde zijn die we op elke plaats in het script kunnen gebruiken. Je kunt variabelen maken en er waarden aan toewijzen. Variabelenamen moeten beschrijvend zijn, zodat je het doel kunt begrijpen waarmee je die variabele hebt gemaakt.

We hebben drie soorten variabelen in bash-scripts:

### 1. Speciale variabelen:

De volgende zijn de andere unieke vooraf ingestelde variabelen:

- $#: aantal opdrachtregelparameters dat aan het script is doorgegeven.
- $@: Alle parameters die naar het script zijn verzonden.
- $?: De eindstatus van het laatste uit te voeren proces.
- $$: de proces-ID van het huidige script.
- $USER: De gebruiker die het script uitvoert.
- $HOSTNAME: De hostnaam van de machine die het script uitvoert.
- $SECONDS: het aantal seconden dat het script is uitgevoerd.
- $RANDOM: Retourneert een willekeurig getal.
- $LINENO: Geeft het huidige regelnummer van het script terug.

### 2. Omgevingsvariabelen:

Gebruik de volgende opdracht om de actieve omgevingsvariabelen in je Bash-sessie te zien:

    env | less

`:q` ga je uit env.

### 3. Door de gebruiker gedefinieerde variabelen:

Door de gebruiker gedefinieerde variabelen zijn variabelen die door ons in ons script worden ingesteld. We hebben bijvoorbeeld de variabele 'jaar' om het huidige jaar op te slaan, zoals hieronder.

    jaar=2020

En we kunnen later gebruiken

    echo $jaar

je kunt zien dat we met `$` naar de waarde verwezen.

Dus maak nu een bestand variables.sh en voeg de onderstaande regels erin toe.

    #! /bin/bash

    website=www.noorderpoort.nl
    year=2021

    # Gebruikersnaam ophalen van speciale variabelen
    name=$USER

    echo "Welkom op $website"
    echo -e "Hallo $name \n"
    echo -e "Jaar = $year \n"
    echo "Wordt uitgevoerd op $HOSTNAME"

## 5. Gebruikersinvoer krijgen

Het verkrijgen van gebruikersinvoer is cruciaal voor het interactief maken van een script, dus voor dit doel gebruiken we in bash-script het 'read'-commando.

    #! /bin/bash
    echo  "Wat is je leeftijd?"
    read leeftijd
    echo  "Je leeftijd is $leeftijd"

## 6. Opdrachtargumenten gebruiken

We kunnen ook gebruikersinvoer lezen van opdrachtargumenten, net als elke andere programmeertaal. We kunnen deze argumenten vervolgens in onze scripts gebruiken als $1, $2, enzovoort, afhankelijk van het aantal argumenten dat we hebben opgegeven. Maak een bestand 'arguments.sh' en kopieer de onderstaande regels erin.

    #! /bin/bash
    echo "Totaal aantal argumenten: $#"
    echo "Gebruikersnaam: $1"
    echo "Leeftijd: $2"
    echo "Volledige naam: $3"

Voer nu het scriptbestand 'arguments.sh' uit met drie extra parameters achter de naam.

    bash arguments.sh patrick 29 'Patrick Linux'

## 7. Lussen gebruiken

Loops worden gebruikt in elke programmeertaal waarbij je dezelfde code herhaaldelijk moet uitvoeren. Er zijn twee soorten loops in bash-script while en for loops.

### Herhalingslus (while)

Het wordt gebruikt wanneer je de coderegel een onbekend aantal keren moet herhalen totdat deze aan bepaalde voorwaarden voldoet. Hier is hoe het wordt gevormd:

    #! /bin/bash
    while [CONDITION]
    do
      [COMMANDS]
    done

De voorwaarde wordt geëvalueerd voordat de opdrachten bij elke iteratie worden uitgevoerd, en deze wordt uitgevoerd totdat de voorwaarde naar false evalueert en de lus wordt beëindigd.

    #! /bin/bash
    i=0

    while [ $i -le 4 ]
    do
      echo Number: $i
      ((i++))
    done

### For loop

De `for`lus herhaalt zich over een lijst met items en voert de opgegeven reeks opdrachten uit. De Bash- `for` lus heeft de volgende vorm:

    #! /bin/bash
    for item in [LIST]
    do
      [COMMANDS]
    done

In het onderstaande voorbeeld zal de lus elk item herhalen en een tabel met variabele i genereren.

    #! /bin/bash
    i=2
    for (( counter=1; counter<=10; counter++ ))
    do
        ((result= $i * $counter))
        echo "$i x $counter = $result"
    done

## 8. Voorwaardelijke verklaringen gebruiken

Voorwaardelijke verklaringen zijn een van de fundamentele concepten van elke programmeertaal. Je neemt beslissingen op basis van bepaalde voorwaarden die zijn vervuld. In het bash-script hebben we voorwaardelijke blokken.

### als verklaring (if)

In een bash-script, als de conditie een bepaalde waarde heeft, laten we eens kijken naar de basisconditie.

    if Condition
    then
      STATEMENTS
    fi

Je kunt zien of statements beginnen met het evalueren van de conditie en Run-statements tussen 'then' en 'fi', op voorwaarde dat de “if” -voorwaarde resulteert in True, anders wordt de instructie genegeerd.

    #! /bin/bash

    echo -n "Enter a number: "
    read VAR

    if [[ $VAR -gt 10 ]]
    then
      echo "The variable is greater than 10."
    fi

In het bovenstaande voorbeeld wordt de gebruiker gevraagd een getal in te voeren, en als het getal meer is dan 10, zie je de uitvoer 'De variabele is groter dan 10.', anders zie je niets.

#### if else-verklaring

Nu gaan we ook een “if else” -blok toevoegen, dat wordt uitgevoerd als de voorwaarde onwaar is.

    if Condition
    then
      STATEMENTS1
    else
      STATEMENTS2
    fi

Dus we zullen het bovenstaande voorbeeld aanpassen.

    #! /bin/bash

    echo -n "Enter a number: "
    read VAR

    if [[ $VAR -gt 10 ]]
    then
      echo "The variable is greater than 10."
    else
      echo "The variable is equal or less than 10."
    fi

Als je de code uitvoert en een getal invoert, zal het script een tekst afdrukken op basis van of het getal groter of kleiner/gelijk is aan 10.

#### if elif statement

Bash heeft ook een gelijkwaardige syntaxis voor 'else if'.

    if Condition1
    then
      STATEMENTS1
    elif Condition2
    then
      STATEMENTS2
    else
      STATEMENTS3
    fi

Dus na het aanpassen van het bovenstaande voorbeeld:

    #! /bin/bash

    echo -n "Enter a number: "
    read VAR

    if [[ $VAR -gt 10 ]]
    then
      echo "The variable is greater than 10."
    elif [[ $VAR -eq 10 ]]
    then
      echo "The variable is equal to 10."
    else
      echo "The variable is less than 10."
    fi

## 9. Functies gebruiken

Net als andere programmeertalen heeft het bash-script ook het concept van functies. Hiermee kan de gebruiker een aangepast codeblok schrijven dat steeds opnieuw moet worden gebruikt.

Syntaxis:

    function FunctionName ()
    {
      statements
    }

Nu zullen we een functie 'som' maken die invoernummers van de gebruiker zal aannemen en de som van deze nummers als uitvoer zal tonen.

    #! /bin/bash
    function Sum()
    {
      echo -n "Enter First Number: "
      read a
      echo -n "Enter Second Number: "
      read b
      echo "Sum is: $(( a+b ))"
    }

    Sum

## 10. Tekenreekslengte weergeven

Het verwerken van strings is een essentieel onderdeel van bash-scripting. Bash-script heeft een eenvoudige manier om de lengte van een stringvariabele te krijgen. In het voorbeeld laten we je zien hoe je de lengte van een string in bash-script kunt krijgen.

    #! /bin/bash
    Str="Welcome to noorderpoort.nl"
    echo "Length is: ${#Str}"

## 11. Strings aaneenschakelen

Bash-script biedt een moeiteloze manier om string bewerkingen af ​​te handelen, zoals het samenvoegen van meerdere strings tot een enkele string. In het voorbeeld laten we je zien hoe je dat doet.

    #! /bin/bash

    string1="noorder"
    string2="poort.nl"
    string=$string1$string2
    echo "$string is a great website."

## 12. Zoek en vervang tekenreeks

Bash-script heeft een handige en gemakkelijke manier om de tekst binnen een string te vinden en te vervangen. Het kan op twee manieren worden gebruikt:

    ${string/pattern/replacement}

Dit vervangt alleen de eerste overeenkomst binnen de opgegeven tekenreeks. Om alle overeenkomsten te vervangen, zullen we deze gebruiken zoals hieronder weergegeven:

    ${string//pattern/replacement}

In dit voorbeeld zullen we beide opties gebruiken om je het verschil in output te laten zien:

    #! /bin/bash
    Str="Path of the bash is /bin/bash"
    # Finding and Replacing First match only
    echo ${filename/bash/sh}
    # Finding and Replacing all matches
    echo ${filename//bash/sh}

## 13. Directory's aanmaken

Het volgende voorbeeld laat zien hoe je een directory kunt maken vanuit een shellscript. Het script krijgt de directorynaam van de gebruiker en controleert of deze al bestaat of niet. Als het bestaat, zou je een bericht "Directory Exists" moeten zien; anders wordt er een map aangemaakt.

    #! /bin/bash
    echo -n "Enter directory name ->"
    read dir
    if [ -d "$dir" ]
    then
    echo "Directory exists"
    else
    `mkdir $dir`
    echo "Directory created"
    fi

## 14. Bestanden lezen

Met Bash kun je bestanden heel effectief lezen. Het onderstaande voorbeeld laat zien hoe je een bestand kunt lezen met shellscripts. Maak een bestand met de naam 'bedrijven.txt' met de volgende inhoud.

    Google
    Amazon
    Microsoft
    Macdonald
    KFC
    Apple

Dit script leest het bovenstaande bestand en geeft de uitvoer weer.

    #! /bin/bash
    file='bedrijven.txt'
    while read line; do
    echo $line
    done < $file

## 15. Bestanden verwijderen

Met behulp van een bash-script kun je ook een bestand verwijderen. In het voorbeeld wordt de gebruiker gevraagd om de bestandsnaam als invoer op te geven en deze te verwijderen als deze bestaat. Het gebruikt de Linux rm-opdracht voor het verwijderen hier.

    #! /bin/bash
    echo -n "Enter filename ->"
    read name
    rm -i $name
    echo "File Deleted"

## 16. Serverstatistieken weergeven

Dit voorbeeld toont je een snelle serverstatistieken. Als systeembeheerder helpt dit bash-script je om belangrijke details te krijgen, zoals uptime, laatste logins, schijf- en geheugengebruik voor een Linux-machine.

    #! /bin/bash
    date
    echo "uptime:"
    uptime
    echo "Currently connected:"
    w
    echo "--------------------"
    echo "Last logins:"
    last -a | head -3
    echo "--------------------"
    echo "Disk and memory usage:"
    df -h | xargs | awk '{print "Free/total disk: " $11 " / " $9}'
    free -m | xargs | awk '{print "Free/total memory: " $17 " / " $8 " MB"}'y
    echo "--------------------"

Je moet het script uitvoeren als rootgebruiker.

## 17. System Maintenance

Dit kleine Linux shell-script upgradet en schoont het systeem automatisch op in plaats van het handmatig te doen.

    #! /bin/bash

    echo -e "\n$(date "+%d-%m-%Y --- %T") --- Starting work\n"

    apt-get update
    apt-get -y upgrade

    apt-get -y autoremove
    apt-get autoclean

    echo -e "\n$(date "+%T") \t Script Terminated"

Je moet dit script uitvoeren als rootgebruiker.

Laatste script alleen uitvoeren als je ook echt de update/upgrade wilt uitvoeren. Bedenk goed, dit kost tijd, de services gaan offline!

Wij hopen dat bovenstaande voorbeeld scripts een goed beeld hebben gegeven over bash-scripting en vooral mee aan de slag gaan en proberen om reperterende handelingen te scripten.