• # le pipe crée un sous-processus indépendant

    Posté par . En réponse au message [Bash] Boucle while - export variable. Évalué à 3.

    Lorsque tu fais "cat file | commande", en interne bash forke un sous-shell, avec tout son environnement, pour "commande" et le connecte au pipe.
    Dans ton cas, tout ce qui est fait par le "while..." est dans ce sous-shell, y compris l'incrémentation de la variable. Mais l'environnement du sous-shell n'est pas retransmis au père à la fin ! Quand tu lis cette variable plus loin dans ton script, elle a toujours sa valeur d'avant le fork. C'est une "autre" variable en somme.
    C'est visible de cette manière:

    I=1

    cat file.txt | { while read REF_LINE
    do
    let I++;
    echo $I;
    done

    echo dedans: $I
    }
    echo dehors: $I


    2
    3
    4
    dedans: 4
    dehors: 1


    La tout de suite, je ne sais pas comment regler le probleme...