Um herauszufinden, wie lange bestimmte Operationen in einem Bash (v4 +) - Skript dauern, möchte ich die Ausgabe des timeBefehls "separat" analysieren und (letztendlich) in einer Bash - Variablen ( let VARNAME=...) erfassen .
Jetzt benutze ich time -f '%e' ...(oder eher command time -f '%e' ...wegen des eingebauten Bash), aber da ich die Ausgabe des ausgeführten Befehls bereits umleite, bin ich wirklich verloren, wie ich die Ausgabe des timeBefehls erfassen würde . Grundsätzlich besteht hier das Problem darin , die Ausgabe von timevon der Ausgabe der ausgeführten Befehle zu trennen .
Was ich möchte, ist die Funktionalität , die Zeitspanne in Sekunden (Ganzzahlen) zwischen dem Starten eines Befehls und seiner Fertigstellung zu zählen. Es muss nicht das timeKommando oder das jeweilige eingebaute sein.
Bearbeiten: Angesichts der beiden folgenden nützlichen Antworten wollte ich zwei Klarstellungen hinzufügen.
- Ich möchte die Ausgabe des ausgeführten Befehls nicht wegwerfen, aber es spielt keine Rolle, ob er auf stdout oder stderr endet.
- Ich würde einen direkten Ansatz einem indirekten vorziehen (dh die Ausgabe wird direkt abgefangen und nicht in Zwischendateien gespeichert).
Die datebisherige Lösung kommt dem nahe, was ich will.
fork(),execvp()undwait3()/wait4(). Dies ist letztendlich, was Zeit und Freunde tun. Mir ist keine einfache Möglichkeit bekannt, dies in bash / perl zu tun, ohne zu einer Datei oder einem ähnlichen Ansatz umzuleiten.