Probleme avec un script shell

Résolu/Fermé
pascal$$ Messages postés 39 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 26 février 2009 - 1 déc. 2007 à 17:47
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 2 déc. 2007 à 02:03
Bonjour,
Je débute en shell et j' aimerais écrire un programme qui compte le nombre d éléments du répertoire local,
j écris donc:

#!/bin/bash
for fichier in $PWD
x=0
do
if [ -e "$fichier" ]
then x=$x+1
done
echo $x

et a l execution j obtiens:
./fichier.sh:line 3:syntax error near unexpected token '$x '=0\r' '
./fichier.sh:line 3:'x=0

Pouvez vous m'indiquer d ou vient l erreur , c rageant quand meme surtout pour un bout de code aussi peti!Merci d avance.
A voir également:

4 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
1 déc. 2007 à 20:10
Salut
Tu veux compter le nombre de fichiers dans le répertoire ?

Tu peux faire beaucoup plus rapide : ls $pwd | wc -l
Sinon voici ton code corrigé

#!/bin/bash
x=0
for fichier in $PWD
do
if [ -f $fichier ]
then x=$(($x+1))
done
echo $x

Cdt
0
pascal$$ Messages postés 39 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 26 février 2009
2 déc. 2007 à 01:01
Merci pour la réponse.Logiquement ça doit marcher mais quand je lance le script j obtiens un message d erreur du meme style.A mon avis le souci ne vient pas des scripts.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
2 déc. 2007 à 01:10
Salut,

tu as oublie fi et il faut utliser $(ls $PWD) puisque for a besoin d'une liste
#!/bin/bash
x=0
for fichier in $(ls $PWD)
 do
  if [ -e $fichier ]
  then
    x=$(($x+1))
  fi
 done
echo $x
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
2 déc. 2007 à 01:22
Oups, petite faute de ma part, essaie :

#!/bin/bash
x=0
for fichier in $PWD/*
do
echo $fichier
if [ -e $fichier ]
then x=$(($x+1))
fi
done
echo $x

Mais pourquoi tu n'aimes pas la commande : ls $PWD | wc -l ?

Cdt
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
2 déc. 2007 à 02:03
Salut,

Mais pourquoi tu n'aimes pas la commande : ls $PWD | wc -l ?

Peut être qu'il vaut s'habituer avec les script shell ;-)
Je débute en shell
0