• [^] # Re: &

    Posté par . En réponse au message action simultanée. Évalué à 3.

    Des parenthèses bien placées et un & derrière devraient suffire.

    Sans parenthèses :

    #!/bin/bash
    for i in a b c
    do
     echo "$i"
     sleep 10
     echo " -- $i"
    done
    
    

    A l'exécution :

    $ time sh /tmp/toto.sh
    a
     -- a
    b
     -- b
    c
     -- c
    real 0m30.025s
    user 0m0.000s
    sys 0m0.004s
    
    

    Avec les parenthèses :
    le code :

    #!/bin/bash
    for i in a b c
    do
    ( echo "$i"
     sleep 10
     echo " -- $i" ) &
    done
    
    

    a l'exécution :

    $ time sh /tmp/toto.sh
    a
    b
    c
    real 0m0.009s
    user 0m0.004s
    sys 0m0.000s
    $ -- a
     -- b
     -- c
    
    

    Explication : les parenthèses exécutent les commandes qu'elles contiennent dans un sous-shell. Ce qui signifie que, dans le code, il faudrait mettre entre parenthèses tout le bloc de code qui doit s'exécuter dans un ordre précis et mettre un & derrière pour que les blocs entre parenthèses s'exécutent en paralèle les uns des autres.