O problema é esta linha:
TIMESEC=$(echo blah | ( /usr/bin/time -f %e grep blah >/dev/null ) 2>&1 | awk -F. '{print $1}')
onde você está redirecionando o erro padrão para corresponder à saída padrão. O bash está escrevendo suas mensagens de rastreio para o erro padrão e está (por exemplo) usando seu echo
integrado junto com outras construções de shell no processo bash.
Se você mudar para algo como
TIMESEC=$(echo blah | sh -c "( /usr/bin/time -f %e grep blah >/dev/null )" 2>&1 | awk -F. '{print $1}')
funcionará em torno desse problema e talvez seja um compromisso aceitável entre o rastreamento e o trabalho:
++ awk -F. '{print $1}'
++ sh -c '( /usr/bin/time -f %e grep blah >/dev/null )'
++ echo blah
+ TIMESEC=0
+ echo ABC--0--DEF
ABC--0--DEF
+ '[' 0 -eq 0 ']'
+ echo 'we are here!'
we are here!