Minha sugestão seria (ligeiramente modificada, já que não tenho sua configuração de 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
Como time
é um bash integrado, precisamos colocar o redirecionamento stderr
"fora" da chamada de horário; é por isso que envolvi a parte principal com bash -c ...
.
Você não precisa definir TIMEFORMAT toda vez através do loop; basta colocá-lo no ambiente para a chamada para bash / time.
Observe que a aritmética de shell é baseada em números inteiros, portanto, para valores de ponto flutuante, use algo como bc
. Minha time
de saída tinha 3 casas decimais, e é isso que eu também perguntei ao bc
.