Назначить результат измерения цикла for с помощью / usr / bin / time в переменной

Мне нужно выполнить команду curl внутри цикла for несколько раз и получить среднее время, затраченное на выполнение одного завитка. Это то, что у меня есть:

while read query; do TIMEFORMAT=%R; time for i in {1..3}; do curl -s -w '\n' -XPOST -H 'Content-Type: application/x-www-form-urlencoded' --data-urlencode query='${query}' ${nginx_url} > /dev/null; done done < queries.txt 

Это печатает количество секунд в stdout, но мне нужно назначить это число переменной, чтобы разделить ее на 3, чтобы получить среднее значение.

Я тестировал:

 realtime=$(time -f "%E" for i in {1..3} ..etc..) realtime=`time -f "%E" for i in {1..3} ..etc..` 

Но это дает синтаксическую ошибку ./test-suite.sh: line 23: syntax error near unexpected token do '.

Я также тестировал:

 realtime=$(bash -c "TIMEFORMAT=%R; time for i in {1..3} ..etc..") realtime=$(bash -c "time -f "%E" for i in {1..3} ..etc..") realtime=$(bash -c "TIMEFORMAT=%R; time for i in {1..3} do ..etc.. ; done; echo $realtime") 

Все они не имеют никаких результатов. Любые идеи приветствуются.

2 Solutions collect form web for “Назначить результат измерения цикла for с помощью / usr / bin / time в переменной”

Мое предложение было бы (слегка изменено, так как у меня нет настроек curl / HTTP):

 $ t=$(TIMEFORMAT=%R bash -c 'time for i in {1..3}; do sleep $((RANDOM % 5)); done' 2>&1) $ avg=$(bc <<< "scale=3; $t/3") $ echo $avg # YMMV 2.667 

Поскольку time является встроенным bash, нам нужно поместить перенаправление stderr «снаружи» вызова времени; вот почему я завернул основную часть bash -c ...

Вам не нужно устанавливать TIMEFORMAT каждый раз через цикл; просто поставьте его в среду для вызова bash / time.

Обратите внимание, что арифметика оболочки является целочисленной, поэтому для значений с плавающей запятой используйте что-то вроде bc . У моего вывода time было 3 десятичных разряда, так что я и попросил bc .

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

 mytime=$(time (for i in {1..3}; do curl -s -w '\n' -XPOST -H 'Content-Type: application/x-www-form-urlencoded' --data-urlencode query='select distinct ?Concept where {[] a ?Concept} LIMIT 100' http://143.233.226.61:443/sparql > /dev/null; done) 2>&1 1>/dev/null) 
  • Fork Bomb: Почему вывод трубопровода в другую копию ботинка Fork работает, если не возвращается Output?
  • как выполнить программу python в сценарии оболочки
  • Официальный стандарт / соглашение для расширения файла для сценариев оболочки для источника
  • запустить сценарий при выключении в Debain
  • Сохранение цветного выхода независимо от источника
  • Как улучшить этот сценарий резервного копирования?
  • Как проверить, является ли вывод команды пустой или пустой?
  • Как сравнить две даты в оболочке?
  • получить выходное и возвращаемое значение grep в одной операции в bash
  • Итерируйте файл до тех пор, пока не будет извлечено каждое значение выше порогового значения
  • Как правильно отключить трубопровод?
  • общая переменная среды для установки темного или светлого фона терминала
  • Interesting Posts

    Как отображать числа только в конце переменной в bash?

    Что особенного: «! Xxx% s% s% s% s% s% s% s% s»?

    Как скопировать файл из удаленной сети на локальный рабочий стол

    Файловая система UUID против логического тома UUID

    Управление процессами и pkill

    Есть ли шлюз служб терминалов для Linux?

    Использование Grep -o или Sed / Awk для захвата фрагмента из середины строки

    Экран входа в систему не появляется после обновления от Debian Wheezy до Jessie

    Список владельцев файлов

    Безопасно ли вручную выполнять операцию apt-get update?

    Синхронизация времени синхронизации RTC с временем Linux при запуске

    Фильтровать файлы, сгенерированные `find`, с помощью обработанного вывода команды` file`

    Если я перезапущу службу xinetd, это влияет на текущие активные FTP-соединения?

    Прочитайте столбец из файла и добавьте конкретный столбец другого файла

    Как отключить xxtrace и сохранить код выхода

    Linux и Unix - лучшая ОС в мире.