• [^] # Re: Récursivité

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

    En fait j'ai écrit le script avec la récursivité mais je ne sais pas s'il fonctionne et pour vérifier je dois récupérer correctement $DEPENDANCES / $COMMANDE :

    #!/bin/sh
    FAUX -> DEPENDANCES=` grep -v '^#' makefile | grep "1ドル:" | sed 's/\t//g' | cut -d ':' -f2 | head -1 `
    FAUX -> COMMANDE=`grep -v '^#' makefile | head -4 | tail -2 | sed 's/\t//g;s/ /:/g'`
    #echo $DEPENDANCES
    #echo $COMMANDE
    if [ ! -e 1ドル ]
    then
     if [ ! -e $DEPENDANCES ]
     then
     0ドル $DEPENDANCES
     else
     for k in $COMMANDE
     do
     var=`echo $k | sed 's/:/ /g'`
     echo $var
     sh -c "$var"
     done
     0ドル toto
     fi
    else
    echo "1ドル existe déjà"

    Donc je cherche toujours le moyen de trouver pour "greper" correctement ce qu'il me faut :

    • $DEPENDANCES : grep 'toto:' makefile | cut -d ':' -f2 | sed 's/\t//g'

    Ça marche mais pour
    grep 'toto.o:' makefile | cut -d ':' -f2 | sed 's/\t//g'
    J'obtiens les résultats pour deux cibles ( toto.o et totooo )
    Comment je désactive le . en tant que caractère générique

    • $COMMANDE : Ici j'essaye de récupérer les lignes après le $DEPENDANCES jusqu’à qu'il y ai une ligne vide
    LIGNE=`sed -n "/1ドル:/=" makefile`
    TEXTE=`sed -n "$LIGNE p" makefile`
     while [ -z $TEXTE ]
     do
     LIGNE=`expr $LIGNE + 1`
     TEXTE=`sed -n "$LIGNE p" makefile`
     echo $TEXTE
     done

    Je ne sais pas pourquoi mais ça ne fonctionne pas lorsque je lance ce petit script ( message d'erreur -> [: 13: toto:: unexpected operator )

    Voila merci d'avance