Aby dowiedzieć się, jak długo trwają niektóre operacje w skrypcie Bash (v4 +), chciałbym przeanalizować dane wyjściowe time
polecenia „osobno” i (ostatecznie) przechwycić je w zmiennej Bash ( let VARNAME=...
).
Teraz używam time -f '%e' ...
(a raczej command time -f '%e' ...
ze względu na wbudowane Bash), ale ponieważ już przekierowałem dane wyjściowe wykonanego polecenia, jestem naprawdę zagubiony w kwestii sposobu przechwycenia wyniku time
polecenia. Zasadniczo problemem jest oddzielenie wyjście z time
z wyjścia wykonywanego polecenia (ów).
Potrzebuję funkcji zliczania czasu w sekundach (liczbach całkowitych) między uruchomieniem polecenia a jego zakończeniem. Nie musi to być time
polecenie ani odpowiednie wbudowane.
Edycja: biorąc pod uwagę dwie przydatne odpowiedzi poniżej, chciałem dodać dwa wyjaśnienia.
- Nie chcę wyrzucać danych wyjściowych wykonanego polecenia, ale tak naprawdę nie będzie miało znaczenia, czy zakończy się na stdout, czy stderr.
- Wolałbym podejście bezpośrednie niż pośrednie (tzn. Przechwytywanie danych wyjściowych w przeciwieństwie do przechowywania ich w plikach pośrednich).
Dotychczasowe rozwiązanie date
zbliża się do tego, czego chcę.
fork()
,execvp()
iwait3()/wait4()
. To jest właśnie czas i przyjaciele. Nie znam prostego sposobu na zrobienie tego w bash / perl bez przekierowywania do pliku lub podobnego podejścia.