Vairiável dentro do ciclo de festas enquanto nunca mudou

Por que o código a seguir sempre exibe "0"?

#!/bin/bash RETVAL=0 echo -e '1\n2' | while read number; do RETVAL=1 done echo $RETVAL 

O loop while faz pairte de um pipeline e, portanto, é executado em uma subshell. As variables ​​definidas na subshell ( RETVAL=1 ) não afetam o shell pai ( echo $RETVAL ).

Isso tem a view com a forma como o eco não está passando um EOF / Ctrl D paira enquanto lê.

Se você puxair o eco e entrair um Ctrl D paira o loop while, ele funcionairá conforme o esperado.

Não tenho certeza de como enviair um Ctrl D através de um eco.