Как получить истекшее время в миллисекундах в скрипте bash? - PullRequest
10 голосов
/ 16 декабря 2010

Я пытался использовать t1=$(date +%s%N), чтобы получить время в наносекундах, но я продолжал получать эту ошибку:

./script.sh: line 10: 1292460931N: value too great for base (error token is "1292460931N")

Я посмотрел онлайн, и кажется, что вы можете использовать команду "time",Однако я не могу найти хороший пример использования команды времени.Любая помощь будет оценена :) 1005 *

Ответы [ 2 ]

5 голосов
/ 16 декабря 2010

Используемая вами команда date не поддерживает %N, поэтому вы выводите буквально 1292460931N. Я попробовал это на Linux, и это сработало, но на FreeBSD я вижу результаты, которые вы получили. Запустите команду date в оболочке и посмотрите, что получится. Возможно ли, что вы используете busybox? Его команда сокращения даты также пропускает %N, но версия, которую я только что попробовал, дала мне 1292463535%N.

2 голосов
/ 16 декабря 2010

Хорошо, пара вещей здесь.

Во-первых, не так много систем может дать вам время, которое в действительности равно точным наносекундам.

Теперь, используя время, либо как /usr/bin/time или встроенная оболочка (bash: help time) очень проста.Если вы хотите ввести команду foo1, то

$ time foo

вернет истекшее время в виде трех строк в stderr

real 0m0.001s
user 0m0.000s
sys  0m0.000s

, которые вы можете использовать любым удобным вам способом.

Если вы хотите получить более точное и точное время, выполните команду много раз.Это может быть так же просто, как написание короткого цикла

time for i in 0 1 2 3 4; do foo; done

сделает foo пять раз и даст вам общее время.Вы, вероятно, хотите выполнить более 5 итераций, поэтому вам, возможно, понадобится счетчик и цикл while или тому подобное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...