Исключить содержимое страницы из переменной:
Когда я попробовал вашу команду, myduration
содержал HTML-содержимое страницы по URL-адресу, который я использовал в своем тесте, плюс значение времени. Добавив -s
для подавления индикатора выполнения и добавив -o /dev/null
к параметрам для curl
, я смог удалить перенаправление на /dev/null
, и в myduration
.
было сохранено только время.
Поскольку значение myduration
, вероятно, будет коротким, вы можете использовать технику ire_and_curses
, которая часто приводит к нулю в качестве результата, который будет меньше, чем 1, который вы тестируете (обратите внимание, что в вашем журнале написано «6 секунд»).
Более точное разрешение:
Если вы хотите провести тест с более точным разрешением, вы можете умножить myduration
на 1000, используя следующую технику:
mult1000 () {
local floor=${1%.*}
[[ $floor = "0" ]] && floor=''
local frac='0000'
[[ $floor != $1 ]] && frac=${1#*.}$frac
echo ${floor}${frac:0:3}
}
Редактировать: Эта версия mult1000
правильно обрабатывает такие значения, как "0,234", "1", "2.", "3.5"
и "6,789". Для значений с более чем тремя десятичными разрядами дополнительные цифры усекаются без округления независимо от значения («1.1119» становится «1.111»).
Ваш скрипт с изменениями, которые я упомянул выше и использующими mult1000
(с моим собственным временем примера):
myduration=$(curl -s -o /dev/null http://192.168.50.1/mantisbt/view.php?id=1 -w %{time_total}); [[ $(mult1000 $myduration) -gt 3500 ]] && echo "`date +'%y%m%d%H%M%S'` took more than 3.5 seconds to load the page http://192.168.50.1/mantisbt/view.php?id=1 " >> /home/shantanu/speed_report.txt
Здесь он разбит на несколько строк (и упрощен), чтобы сделать его более читабельным здесь в этом ответе:
myduration=$(curl -s -o /dev/null http://example.com -w %{time_total})
[[ $(mult1000 $myduration) -gt 3500 ]] &&
echo "It took more than 3.5 seconds to load thttp://example.com" >> report.txt