Erreur dans script bash

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. Modérateur
    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
    1. Modérateur
      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