bash time
é uma importante PITA. Sua saída não é redirecionável sem hacks desagradáveis como seus múltiplos níveis de subshells. O link sugere que a resposta correta é:
TIME = $( ( time $MYSQL "$1" 2>&1 | tee /tmp/somefile.txt > /dev/null; exit ${PIPESTATUS[0]} ) 2>&1 )
Observe que o bash time
usa um pipeline inteiro como argumento, portanto, a colocação da subshell após a invocação do horário está incorreta.
Isso foi testado com
TIME = $( ( time ls /asdfasfdsfs 2>&1 | tee asdf 2>&1 >/dev/null ; exit ${PIPESTATUS[0]} ) 2>&1 );
echo $?;
echo $TIME
Que me deu
2
real 0m0.003s user 0m0.004s sys 0m0.004s