Verder Terug Inhoud

10. Diversen

10.1 Inlezen van gebruikersinvoer met read

In veel situaties wil je de gebruiker wellicht vragen om wat invoer, en er zijn verscheidene manieren om dit te bereiken: Dit is één van die manieren:

                #!/bin/bash
                echo Vul alsjeblieft je naam in
                read NAME
                echo "Hi $NAME!"
        
Een variant daarop zal het volgende voorbeeld verduidelijken waarmee je meerdere waarden met read kan verkrijgen.
                #!/bin/bash
                echo Vul alsjeblieft je voornaam en achternaam in
                read FN LN 
                echo "Hi! $LN, $FN !"
        

10.2 Rekenkundige waarde bepalen

Probeer het volgende achter de opdrachtregel (of in een shell):

echo 1 + 1

Als je verwachtte '2' te zien te krijgen, zal je wel teleurgesteld zijn. Wat als je wilt dat BASH van een aantal getallen de waarde bepaalt? Dit is de oplossing:

echo $((1+1))

Hiermee zal een 'logischer' uitvoer worden geproduceerd. Dit is voor het bepalen van de waarde van een rekenkundige expressie. Je kunt dit ook als volgt bereiken:

echo $[1+1]

Als je breuken of meer rekenkunde nodig hebt of dit gewoon wilt, kun je bc gebruiken om de waarde te bepalen van rekenkundige expressies.

als ik op de opdrachtregel "echo $[3/4]" opgaf, zou het 0 retourneren omdat bash alleen integers gebruikt bij beantwoording. Als je "echo 3/4|bc -l" opgaf, zou het op juiste wijze 0.75 retourneren.

10.3 Bash zoeken

UIt een bericht van mike (zie Met dank aan)

je gebruikt altijd #!/bin/bash .. je zou wellicht een voorbeeld

kunnen geven van waar bash is te vinden.

de voorkeur is 'locate bash', maar niet op alle computers is

locate geënstalleerd.

`find ./ -name bash' vanaf de rootdir zal gewoonlijk wel werken.

Aanbevolen te doorzoeken locaties:

ls -l /bin/bash

ls -l /sbin/bash

ls -l /usr/local/bin/bash

ls -l /usr/bin/bash

ls -l /usr/sbin/bash

ls -l /usr/local/sbin/bash

(kan zo geen andere directory's bedenken... ik heb het voorheen

meestal wel op een ander systeem op één van deze

plaatsen kunnen vinden.

Je zou ook nog 'which bash' kunnen proberen.

10.4 De return waarde van een programma verkrijgen

Onder Bash, wordt de return waarde van een programma in een speciale variabele, genaamd $?, opgeslagen.

Hiermee wordt geïllustreerd hoe de return waarde van een programma kan worden afgevangen, waarbij ik ervan uit ga dat de directory dada niet voorkomt. (Ook dit was een suggestie van mike)

        #!/bin/bash
        cd /dada &> /dev/null
        echo rv: $?
        cd $(pwd) &> /dev/null
        echo rv: $?
        

10.5 Afvangen van de uitvoer van een opdracht

Dit kleine script laat alle tabellen van alle databases zien (ervan uitgaande dat je MySQL hebt geïnstalleerd). Overweeg tevens het wijzigen van de opdracht 'mysql' waarbij een geldige gebruikersnaam en wachtwoord wordt gebruikt.

        #!/bin/bash
        DBS=`mysql -uroot  -e"show databases"`
        for b in $DBS ;
        do
                mysql -uroot -e"show tables from $b"
        done
        

10.6 Meerdere bronbestanden

Je kunt met de opdracht source meerdere bestanden gebruiken.

__TO-DO__


Verder Terug Inhoud