Erreur dans script bash

schizophrenia -  
jipicy Messages postés 41342 Statut Modérateur -
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
A voir également:

1 réponse

mamiemando Messages postés 34184 Statut Modérateur 7 888
 
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
jipicy Messages postés 41342 Statut Modérateur 4 896
 
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