• # http://www.chezmoicamarche.org/

    Posté par . En réponse au message exit qui exit pas. Évalué à 8.

    C'est bien le comportement normal, car "piper" tout le bloc while est équivalent à le mettre entre parenthèses, c'est à dire l'exécuter dans un sous-shell.
    L'exit sort donc bien du script en cours d'exécution, c'est-à-dire juste le while.

    De la même façon, tu ne saurais pas, à l'intérieur de ta boucle while, changer des variables et récupérer leur valeur après, elles sont perdues car elles étaient définies dans le sous-shell.

    C'est le même problème avec un "while read" qui lit la sortie d'une autre commande.

    Par contre c'est différent avec les redirections, donc tu pourrais arriver presque au même résultat en jouant avec un tube nommé (man mkfifo):

    #!/bin/sh

    if ! [ -e plop.fifo ];then
    mkfifo plop.fifo
    fi

    cat plop.fifo &

    while true
    do
    echo plop
    exit 1
    done >plop.fifo

    echo fin