Erreur dans script bash

Fermé
schizophrenia - 9 mars 2009 à 17:28
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 9 mars 2009 à 23:28
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 33476 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 janvier 2025 7 816
9 mars 2009 à 23:24
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 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
9 mars 2009 à 23:28
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