Você pode usar um pequeno hack com redirecionamentos:
byteCount=$( exec 3>&1 ;
dd if=$file bs=1 skip=$skippedBytes | tee -a >(wc -c >&3) $file.output |\
$($exportCommandString $file) > /dev/null ; 3>&1 )
Ele redireciona toda a saída para 3, que você criou com exec, e a retorna para um no final.
Você também precisa redirecionar todas as saídas de $ exportCommandString para / dev / null, caso contrário, ele será misturado com a saída wc.
Todo stderr funcionará normalmente, não há alterações.
p.s .: você pode usar tee -a file
em vez de tee >(cat - >> file))
.
p.p .: você não pode exportar variáveis do subshell, que é sempre criado ao usar o canal |
no bash ou $()
. Então não há como fazer algo como
tee -a >(VAR=$(wc -c)) $file.output