Aby dowiedzieć się, jak długo trwają niektóre operacje w skrypcie Bash (v4 +), chciałbym przeanalizować dane wyjściowe timepolecenia „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 timepolecenia. Zasadniczo problemem jest oddzielenie wyjście z timez 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ć timepolecenie 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 datezbliż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.