Script shell erreur non identifié

Résolu
samias -  
samiastennis Messages postés 6 Statut Membre -
Bonjour,
voilà mon script qu'à chaque fois je l'exécute je me bloque .Un message d'erreur s'affichera " Erreur de syntaxe près du symbole inattendu « if »".
Il s'agit d'écrire une commande TOTAL qui donne le nombre de fichiers et de répertoires présents dans le répertoire en cours.
Aidez-moi SVP
merci
voilà mon script:

#!/bin/bash
chemin = ls
nbf=0
nbd=0

for item in $chemin do

if [ ! -f "$item" ]; then
nbf=$[$nbf+1]
elif [ ! -d "$item" ]; then
nbd=$[$nbd+1]
fi
done
echo "nombrede fichier: " $nbf echo "nolmbre de dossier: " $nbd

2 réponses

  1. Flachy Joe Messages postés 2303 Statut Membre 261
     
    Salut,
    le
    do
    est mal placé, il manque soit un saut de ligne soit un point-virgule.
    for var in $array ;  do
    done
    #ou
    for var in $array 
    do
    done
    


    PS : pense à utiliser la balise
    <code>
    (icône <> ) lorsque tu écris tes messages.
    1
    1. samiastennis Messages postés 6 Statut Membre
       
      merci , ça marche bien maintenant :)
      0
  2. Utilisateur anonyme
     
    salut,

    je vois plusieurs erreurs, certaines peut-être dues à la recopie (?) :
    chemin=repertoire
    pas d'espaces autour du égal
    for f in $chemin; do
    il manque un
    ;
    .
    for f in $chemin
    , ici,
    $f
    ne vaudra que
    $chemin
    : la boucle ne "descendra" dans le répertoire
    for f in $chemin/*
    .

    ceci n'est pas une erreur, mais c'est une forme ancienne:
    nbf=$[$nbf+1] 
    , tu pourrais profiter de ce que
    bash
    peut attribuer le type entier à des variables déclarées :
    declare -i nbf nbd
    , puis
    nbf+=1
    .
    1
    1. samiastennis Messages postés 6 Statut Membre
       
      je viens juste de corriger la 1ère erreur ;)
      merci beaucoup pour votre aide .
      0