time(1) in Skript einsetzen

15/02/2009 - 01:23 von Christian Baer | Report spam
Hallo liebe Programmierer!

Um die Zeit eines Skripts (sh oder bash) zu überprüfen, würde ich gerne
time(1) in dem Skript selber einsetzen. Die Einschrànkung dabei ist, daß
ich nicht das komplette Skript timen möchte (das fragt nàmlich anfangs
nach Benutzereingaben und da ist es irgendwie sinnfrei schon die
Stoppuhr laufen zu lassen). Ich würde gerne einen *Teil* des Skripts
zeitlich verfassen, nicht nur einen einzelnen Befehl. Sehr primitiv
vielleicht sowas:

nutzereingaben;
time -h {
befehl;
befehl;
befehl}
andere befehle...

Geht das? Geht es vielleicht auch, die "times" in einander zu verschachteln?

Gruß
Christian

Ich kam.
Ich ging.
Und ich war da gewesen.
 

Lesen sie die antworten

#1 Helmut Waitzmann
15/02/2009 - 03:02 | Warnen spam
Christian Baer writes:

Das newsgroup »de.comp.os.unix.shell« ist besser geeignet, daher:
Crossposting und Follow-Up dorthin.

Um die Zeit eines Skripts (sh oder bash) zu überprüfen, würde ich gerne
time(1) in dem Skript selber einsetzen. Die Einschrànkung dabei ist, daß
ich nicht das komplette Skript timen möchte (das fragt nàmlich anfangs
nach Benutzereingaben und da ist es irgendwie sinnfrei schon die
Stoppuhr laufen zu lassen). Ich würde gerne einen *Teil* des Skripts
zeitlich verfassen, nicht nur einen einzelnen Befehl. Sehr primitiv
vielleicht sowas:

nutzereingaben;
time -h {
befehl;
befehl;
befehl}
andere befehle...

Geht das?



Meines Wissens nicht: Weder das »bash« mit dem reservierten Wort »time«
noch das Programm »time« kennt den Parameter »-h«.

Ich kann nur folgendes anbieten:

Wenn das Shell-Skript ein »bash«-Skript ist:

»time« mit oder ohne den Schalter »-p« (lies dazu den Abschnitt »SHELL
GRAMMAR« im »bash«-Manual-Page):

time -p {
befehl
befehl
befehl
}

Wenn das Shell-Skript zwar ein POSIX-Shell- aber kein »bash«-Skript ist,
geht es so nicht: Dann ist »time« kein syntaktisch spezielles
reserviertes Wort der Shell-Grammatik sondern ein ganz normales Programm.
Normalen Programmen kann man aber keine Shell-Kommando-Listen zur
Ausführung direkt übergeben, denn zur Ausführung einer
Shell-Kommando-Liste bedarf es eines Shells, das sie abarbeitet. »time«
ist aber kein Shell.

Man kann »time« aber ein Shell, dem man eine Kommandozeile mitgibt, zur
Ausführung übergeben. Auch hier kann der Schalter »-p« dazugenommen oder
weggelassen werden (was er bewirkt, steht im Manual-Page zum Programm
»time«):

time -p -- sh -c 'befehl; befehl; befehl' sh


Geht es vielleicht auch, die "times" in einander zu verschachteln?



Sicherlich, z.B.:

»bash«:

time { time befehl; befehl; time befehl;}

POSIX-Shell:

time -- sh -c 'time -- befehl; befehl; time -- befehl'
Wenn Sie mir E-Mail schreiben, stellen | When writing me e-mail, please
Sie bitte vor meine E-Mail-Adresse | precede my e-mail address with
meinen Vor- und Nachnamen, etwa so: | my full name, like
Helmut Waitzmann , (Helmut Waitzmann)

Ähnliche fragen