Usando o GNU Parallel:
(echo abc; sleep 10; echo def;sleep 10; echo def;)|parallel -uj1
-u é necessário para obter a saída imediatamente. Sem o comando será executado, mas a saída só será impressa posteriormente.
-j1 força a execução de um único joblot. Deixá-lo fora fará com que o GNU Parallel leia n jobs antes de iniciar, onde n = número de núcleos.