• [^] # Re: Récursivité

    Posté par . En réponse au message Faire un script reproduisant une commande. Évalué à 1.

    J'ai modifié le script en prenant en considération tout les commentaires :

    #!/bin/sh
    if [ ! -e 1ドル ]
    then
     DEPENDANCES=`cat makefiletest | grep -v '^#' | grep '1ドル' | sed 's/\t//g' | c ut -d ':' -f2 | head -1`
     COMMANDE=`cat makefiletest | grep -v '^#' | grep -v ':' | sed 's/\t//g'| sed 's/ /:/g'`
     for i in $DEPENDANCES
     do
     if [ -e $i ]
     then for k in $COMMANDE
     do
     var=`echo $k | sed 's/:/ /g'`
     echo $var
     #sh -c "$var"
     done
     else
     cat makefiletest | grep $i 2>&1 /dev/null
     if [ $? -ne 0 ]
     then
     echo "prérequis $i inexistant"
     exit 1
     else
     echo "STOP" <- Récursivité ici ?
     exit 0
     fi
     fi
     done
    else
    echo "La cible 1ドル existe deja"
    exit 0
    fi

    1) Comment je fait pour tester si $i se trouve en tant que cible ? ( Par exemple tester si toto.o se trouve en tant que cible )

    cat makefiletest | grep $i 2>&1 /dev/null
    if [ $? -ne 0 ]

    Avec grep j'ai toutes lignes contenant le mot or il faut que la ligne commence par ce mot

    2) Pour la récursivité c'est bien ici que je dois le faire avec : 0ドル $i ?

    echo "STOP"

    3) Après j'ai toujours le problème pour récupérer $DEPENDANCES et $COMMANDE selon la cible :
    Si la cible est toto je dois pouvoir mettre dans

    $DEPENDANCES= toto.o

    $COMMANDE= touch toto
    echo toto est touche

    Dans ce script cela fonctionne que quand il n'y a qu'un seul bloc dans le makefile :

    toto: toto.o
    touch toto
    echo toto est touche

    Quand il y a plusieurs blocs je n'arrive pas a récupérer juste le bloc correspondant le nom de la cible

    Voila merci d'avance