====== Aufgabe: Bash Challenges ======
Sie finden eine Reihe von Beispielen, die ein unerwartetes Resultat zeigen.
Ihre Aufgabe:
* Erklären Sie, wieso das Resultat falsch ist.
* Wie müsste das Skript geändert werden, um ein korrektes Resultat zu erzeugen.
==== Vorbereitung ====
Erstellen Sie ein neues Verzeichnis ''~/challenge01''.
Speichern Sie in diesem Verzeichnis die Dateien (Daten und Skripts) für die Challenges.
===== calc: Rechnen ist Glücksache =====
//Quellennachweis: itsfoss.com//
=== Beschreibung ===
Das Skript liest eine Reihe von Zahlen aus einer Datei.
Diese Zahlen werden addiert und die Summe angezeigt.
=== Fehler ===
* Erwartetes Resultat: 536
* Tatsächliches Resultat: 522
=== Dateien ===
102
071
210
153
#!/bin/bash
declare -i SUM=0
while read X ; do
SUM+=$X
done < calc.data
echo "Sum is: $SUM"
===== tokens: Zwei Dinge zählen =====
//Quellennachweis: itsfoss.com//
=== Beschreibung ===
Das Skript liest einen Input-Stream mit zwei unterschiedlichen Werten: ''RED'' und ''BLUE''.
Die Reihenfolge und Häufigkeit der Werte ist unbekannt.
Für unser Beispiel werden die Werte durch die Funktion ''stream()'' erzeugt.
Diese Funktion dürfen Sie nicht verändern.
Das Skript soll die Anzahl der ''RED''- und ''BLUE''-Werte zählen.
=== Fehler ===
Das vorliegende Skript kann entweder ''RED'' oder ''BLUE'' zählen.
Es gelingt scheinbar nicht, beides zu zählen.
=== Dateien ===
#!/bin/bash
# You MUST NOT change that :
stream() {
TOKENS=( "RED" "BLUE" )
for((i=0;i<100;++i)) ; do
echo ${TOKENS[RANDOM%2]}
done
}
# You MUST change that
stream | \
grep -F RED | wc -l > RED.CNT
cat RED.CNT