Variável dentro do loop while do bash nunca mudou

1

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

#!/bin/bash

RETVAL=0
echo -e '1\n2' | while read number; do
    RETVAL=1
done

echo $RETVAL
    
por user140259 09.10.2012 / 15:45

2 respostas

3

O loop while faz parte de um pipeline e, portanto, é executado em um subshell. Variáveis definidas no subshell ( RETVAL=1 ) não afetam o shell pai ( echo $RETVAL ).

    
por 09.10.2012 / 17:27
0

Tem a ver com como o eco não está passando um EOF / Ctrl D para o tempo lido.

Se você puxar o eco para fora e inserir um Ctrl D no loop while, ele funcionará como esperado.

Não sei como enviar um Ctrl D por meio de um eco.

    
por 09.10.2012 / 16:09

Tags