Nieuws:

We zijn er weer.

Na lange tijd van afwezigheid zijn we er weer  :laugh:
We hebben alle wachtwoorden gereset, je oude wachtwoord werkt niet meer.Je moet via het "wachtwoord vergeten"-linkje je wachtwoord resetten. Je krijgt hiervoor een mailtje op het adres dat je bij ons geregistreerd hebt.

De komende tijd zijn we nog druk bezig om de rest van de site op te bouwen, dus het kan zijn dat sommige onderdelen (tijdelijk) niet werken.

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Plaats van commando in bash script  (gelezen 587 keer)

Plaats van commando in bash script
« Gepost op: 2013/01/13, 20:33:59 »
Beste mensen,

In een eerder topic ( "Tafelsommen scripten binnen bashhttp://forum.ubuntu-nl.org/programmeren/tafelsommen-scripten-binnen-bash/msg722931/#msg722931"  opgestart door ugurgazi http://forum.ubuntu-nl.org/profile/ugurgazi/ ) vond ik onderstaand script:

#!/bin/bash
while true
do
    getallinks=$((RANDOM/(32767/10)+1))
    getalrechts=$((RANDOM/(32767/10)+1))

    echo -n "Hoeveel is $getallinks x $getalrechts ? "
    read antwoordleerling
    antwoordjuiste=$((getallinks*getalrechts))

    if (( antwoordleerling == antwoordjuiste ))
    then
        echo "Goed zo! $getallinks x $getalrechts is inderdaad $antwoordjuiste."
    else
        while (( antwoordleerling != antwoordjuiste ))
        do
            echo -n "Fout! Probeer het nogmaals $getallinks x $getalrechts = "
            read antwoordleerling
        done
    fi
done

Dit stukje script kan ik heel goed gebruiken binnen m'n werksituatie, ik wil alleen de antwoorden, zowel goed als fout, weg laten schrijven naar een logbestand. Ik wil daarvoor de code >> log.txt   gebruiken maar ik kom er niet uit achter welke regel ik dit commando moet plaatsen.

Ik heb (voor zover ik het kan overzien) al alles geprobeerd maar niets werkt, ik krijg steeds foutmeldingen en het logbestand blijkt iedere keer leeg te zijn.

Wie kan/wil me helpen?

Offline Rachid

  • Vertaalteam
    • rachidbm
    • Mijn blog
  • Steunpunt: Nee
Re: Plaats van commando in bash script
« Reactie #1 Gepost op: 2013/01/13, 22:53:16 »
Hier een simpeler voorbeeld:
while true
do
  read invoer
  echo $invoer >> log.txt
done
Pas wanneer je op enter drukt zal de invoer weggeschreven worden naar log.txt.
Afbreken doe je met CTRL+C
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Offline MauRice2

  • Lid
  • Steunpunt: Nee
Re: Plaats van commando in bash script
« Reactie #2 Gepost op: 2013/01/14, 19:45:26 »
Thunderstruck43,

Iets mooier maar belange na nog niet af..
#!/bin/bash

Bool=true
Totaal=0
# Eventuele oude log.txt bestand te verwijderen
rm -f log.txt
echo "Tafelsom vragen, het woord 'stop' is om te stoppen bij een goed antwoord."

while $Bool
do
    getallinks=$((RANDOM/(32767/10)+1))
    getalrechts=$((RANDOM/(32767/10)+1))

    echo -n "Hoeveel is $getallinks x $getalrechts ? "
    read antwoordleerling

if (( $antwoordleerling == "stop" ))
then
Bool=false
else
        antwoordjuiste=$((getallinks*getalrechts))
Totaal=$((Totaal+1))

if (( antwoordleerling == antwoordjuiste ))
then
echo "Goed zo! $getallinks x $getalrechts is inderdaad $antwoordjuiste."
echo "Goed zo! $getallinks x $getalrechts is inderdaad $antwoordjuiste." >> log.txt
else
while (( antwoordleerling != antwoordjuiste ))
do
echo -n "Fout! Probeer het nogmaals $getallinks x $getalrechts = "
echo "Fout! Probeer het nogmaals $getallinks x $getalrechts = " >> log.txt
read antwoordleerling
done
fi
fi
done

Fouten=`cat log.txt | grep Fout | wc -l`
echo "Je heb $Fouten fout(en) op een totaal van $Totaal tafelsom vragen gemaakt."

MvG,
MauRice
Registered Linux user: 473556

Offline Bloom

  • Lid
  • Steunpunt: Ja
Re: Plaats van commando in bash script
« Reactie #3 Gepost op: 2013/01/14, 20:02:09 »
Om een tekst gelijktijdig naar het scherm en naar een logfile te sturen:
echo blablabla | tee -a log.txt

Offline MauRice2

  • Lid
  • Steunpunt: Nee
Re: Plaats van commando in bash script
« Reactie #4 Gepost op: 2013/01/15, 06:41:44 »
Om een tekst gelijktijdig naar het scherm en naar een logfile te sturen:
echo blablabla | tee -a log.txt

Klopt Bloom,

Dat werkt wel waneer het antwoord "Goed" is.
Als het antwoord "Fout" is. komen de regels achter elkaar in plaats van onder elkaar.
Bij  het antwoord "Fout" is niet voor niets de optie -n weg gelaten bij het wegschrijven naar de log bestand.

Zoals ik eerder zij... Het is verre van af.
Je kan bv alles laten verlopen via Zenity dialog boxen.

MvG,
MauRice
Registered Linux user: 473556