Wie man die verstrichene Zeit in Millisekunden in einem bash-Skript?
Versuchte ich mit t1=$(date +%s%N)
zu bekommen, die Zeit in Nanosekunden, aber ich hatte immer diese Fehlermeldung:
./script.sh: line 10: 1292460931N: value too great for base (error token is "1292460931N")
Ich schaute online, und es scheint, dass Sie können verwenden Sie die "time" - Befehl, aber ich kann nicht finden, ein gutes Beispiel für die Verwendung der time-Befehl. Jede Hilfe wäre sehr geschätzt 🙂
- Sind Sie versuchen, um die Zeit, die Ihr Skript nahm zu laufen oder die Zeit, etwas in Ihrem Skript nahm zu laufen?
- etwas in meinem Skript
Du musst angemeldet sein, um einen Kommentar abzugeben.
Okay, ein paar Dinge hier.
Ersten, nicht eine Menge von Systemen geben kann, die Sie eine Zeit, die eigentlich genau zu Nanosekunden sowieso.
Nun, mit der Zeit, entweder als
/usr/bin/time
oder die shell-builtin (bash:help time
) ist sehr einfach. Wenn der Befehl, den Sie wollen, um die Zeitfoo1
, dannzurückkehren wird die verstrichene Zeit als drei Zeilen auf stderr
die Sie verwenden können, wie Sie möchten.
Wenn Sie möchten, um eine besser, genauere timing, führen Sie den Befehl viele Male. Dies kann so einfach wie das schreiben einer kurzen Schleife
tun
foo
fünf mal, und geben Sie die Gesamt-Zeit. Sie wahrscheinlich wollen zu tun, mehr als 5 Iterationen, so würden Sie wahrscheinlich wollen eine Theke und eine while-Schleife oder dergleichen.time
mit derTIMEFORMAT
variable oder/usr/bin/time
mit der-f
option. Sehenman bash
oderman time
.Den
date
Befehl, die Sie verwenden nicht unterstützt%N
so dass Ihr Ausgang ist buchstäblich1292460931N
. Ich habe versucht es unter Linux und es hat funktioniert, aber auf FreeBSD sehe ich die Ergebnisse, die Sie bekam. Führen, dass der date-Befehl in eine shell und sehen, was dabei rauskommt. Ist es möglich, Sie mitbusybox
? Seine cut-down-Befehl "date" auch lässt%N
aber die version habe ich gerade versucht, hat mir1292463535%N
.getitimer()
undsetitimer()
und verwenden Sie Ihr Skript aufrufen, das.