Ich habe eine Frage bezüglich der prinzipiellen Funktionsweise eines Counters. Ich versuche dieses Beispiel nachzuvollziehen, habe aber leider arge Schwierigkeiten, da ich in Sachen Shellprogrammierung noch ziemlich unerfahren bin.
Das Skript dient der Beschreibung der Dauer von Niederschlagsereignissen. Wird ein bestimmter Schwellwert in mm überschritten, so liegt ein Ereignis vor, anderenfalls nicht.
Code: Alles auswählen
# Schritt 2 - Funktion
Reihe(){
SCHWELLE=${1:-0.5}
INPDATA="\Verzeichnis"
# NaN umwandeln in -999
sed -e 's=NaN=-999=' ${INPDATA} | \
awk "{ if ( \$6 > ${SCHWELLE} ) { print 1 } else { print 0 } }"
}
Counter(){
# Auswertung der Reihe
WERT=-1
# for VAL in $(Reihe 0.5)
for VAL in $*
do
if [ ${WERT} -lt 0 ]
then
# Initialisierung
WERT=${VAL}
COUNT=1
fi
if [ ${WERT} -eq ${VAL} ]
then
# zaehlen
COUNT=$((COUNT+1))
else
# ausgabe und initialisierung der naechsten zaehlung
echo ${WERT} ${COUNT}
WERT=${VAL}
COUNT=1
fi
done
# ausgabe der letzten zaehlung
echo ${WERT} ${COUNT}
}
Ich habe nun folgende Fragen:
Warum wird der Wert -1 verwendet?
for VAL in $* ---> Die einzelnen Argumente (also die gewonnenen Nullen und Einsen) werden vor jedem Schleifendurchlauf jeweils nacheinander in die Variable VAL gelegt.
Durch was oder wie verändert sich mein Variable Wert durch die eingelesenen Nullen und Einsen. Ich kann die prinzipielle Funktionsweise irgendwie nicht nachvollziehen. Mein $Wert muss sich ja irgendwie verändern, damit mein Counter zählt.
Ich würde mich riesig freuen, wenn mir jemand bei meinem Verständnisproblem helfen könnte.