awk und shell: Variablenspielerei
12. Mai 2009 | 12:06:54
Das hier gezeigte kleine Shell-Skript, soll die Interaktion zwischen awk und der Shell bzw. dem -Skript demonstrieren. D.h., es wird eine Shell-Variable an den Aufruf von awk übergeben, dort bearbeitet und der neue Wert der Shell-Variablen wieder zugewiesen:
Kurze Erklärung:
Es wird 20mal das Tcl-Skript 'dmtest.tcl' aufgerufen. Dieses Skript macht irgendwas und gibt dann z.B. den String "Zeit: 23811 Microsekunden" zurück. Den Zeitwert finden wir dann im awk-Skript in der Variablen $2 und addieren ihn zu der Shell-Variablen z. Danach geben wir den neuen Wert an die Shell-Skript-Varible zurück und verwenden diesen dann beim nächsten Schleifendurchlauf usw.
Ich weiß, die Zeitmessung hätte ich auch gleich vollständig im Tcl-Skript erledigen können, etwa derart:
#!/bin/bash
z=0
for i in `seq 20`
do
z=`tclsh8.5 dmtest.tcl | awk -v z=${z} '{ z+=$2; print z }'`
done
echo "duration = ${z} microsec."Kurze Erklärung:
Es wird 20mal das Tcl-Skript 'dmtest.tcl' aufgerufen. Dieses Skript macht irgendwas und gibt dann z.B. den String "Zeit: 23811 Microsekunden" zurück. Den Zeitwert finden wir dann im awk-Skript in der Variablen $2 und addieren ihn zu der Shell-Variablen z. Danach geben wir den neuen Wert an die Shell-Skript-Varible zurück und verwenden diesen dann beim nächsten Schleifendurchlauf usw.
Ich weiß, die Zeitmessung hätte ich auch gleich vollständig im Tcl-Skript erledigen können, etwa derart:
puts "duration = [time {
for {set i 0} {$i < 20} {incr i 1} {
...
}
}]"

