Вычитание времени в Bash [дубликат]

Вот один из способов чтения этих данных в ассоциативный массив bash:

Код:

#!/usr/bin/env bash
declare -A hosts
while IFS=" " read -r priority host ; do
  hosts["$priority"]="$host"
done < <(dig mx +short google.com)    

for priority in "${!hosts[@]}" ; do
  echo "$priority -> ${hosts[$priority]}"
done

Вывод:

20 -> alt1.aspmx.l.google.com.
10 -> aspmx.l.google.com.
50 -> alt4.aspmx.l.google.com.
40 -> alt3.aspmx.l.google.com.
30 -> alt2.aspmx.l.google.com.
0
01.02.2017, 15:23
2 ответа

Кроме самостоятельного вычисления длительности сценария (желательно с использованием значений, возвращаемых из date+%s, как указал Роман) у вас есть еще несколько вариантов.

Существует команда time. Вы можете выполнить time some-script.sh, и в конце будет выведено время выполнения скрипта. См. man-страницу.

Вы также можете использовать $SECONDS в сценарии bash. Он будет хранить количество секунд с момента запуска процесса. Таким образом, вы можете echo It took $SECONDS в конце вашего сценария или около того. Поищите $SECONDS на странице bash man.

Кроме того, в bash есть встроенный модуль times. Она печатает информацию, подобную time, но для самой оболочки (процесса, который ее выполняет), а не для любой команды, которая ей передается (на самом деле она не принимает никаких аргументов). См. также man bash.

EDIT: Ваша вторая ссылка действительно предоставляет решение, которое выглядит очень похожим на то, что вы пытаетесь сделать, и оно также использует строку формата +%s, о которой говорил Роман.

3
28.01.2020, 02:19

Вы можете использовать date +% s - в нем сохраняются секунды с 1970-01-01 00:00:00 UTC

{{1} }
1
28.01.2020, 02:19

Теги

Похожие вопросы