Erreur dans script bash

schizophrenia -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
svp trouver avec moi la faute dans ce script
# !/bin/sh
if [ $# -eq 0 ]
then
echo erreur : verifier le nombre de parametre
fi
for i in $i
do
if [ -d $i ]
then
la liste e sous repertoire de $i est
total=0
cd $i
for j in *
do
if [ -d $i ]
then
echo $i
total=`expr $total + 1`
fi
done
cd $DIR
echo "le nombre de sous_repertoire est $total"
else
echo $i n\'est pas un repertoire
d
Configuration: Linux Fedora
Firefox 3.0.4

1 réponse

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Commence par indenter ton code, tu verras que ton else tombe à l'intérieur du 2e for, que le 2e if n'est pas fermé, et que le deuxième for n'est pas fermé (à moins que le d de la fin soit un done qui a souffert). En gras ci-dessous ce qui ne va pas :
    # !/bin/sh
    if [ $# -eq 0 ]
    then
        echo erreur : verifier le nombre de parametre
    fi
    for i in $i
    do
        if [ -d $i ]
        then
            la liste e sous repertoire de $i est
            total=0
            cd $i
            for j in *
            do
                if [ -d $i ]
                then
                    echo $i
                    total=`expr $total + 1`
                fi
            done
            cd $DIR
            echo "le nombre de sous_repertoire est $total"
        else
            echo $i n\'est pas un repertoire
    d

    Bon ça c'est pour la syntaxe, mais sinon ta première boucle ne veut rien dire, elle fait parcourir à la variable i la suite $i qui est une chaîne vide, donc il ne peut rien se passer. Je te rappelle qu'une boucle for doit parcourir un ensemble de valeurs séparées d'un espace.

    Bonne chance
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Il manque aussi un "exit" sans quoi ça ne sert pas à grand chose :
      # !/bin/sh
      if [ $# -eq 0 ]
      then
          echo erreur : verifier le nombre de parametre
          exit 1
      fi
      0