Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/03/2007, 03h26   #1
Membre émérite
 
Inscription : juin 2006
Messages : 1 117
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2006
Messages : 1 117
Points : 989
Points : 989
Par défaut Syntaxe script Bash

Bonjour. J'ai fait un script mais je n'arrive pas à l'exécuter, j'ai les message
Code :
1
2
./TriScript.sh: line 7: syntax error near unexpected token `if'
./TriScript.sh: line 7: `        if [ -d $i ]; then'
Voilà le script :
Code :
1
2
3
4
5
6
7
8
9
 
#!/bin/sh
mkdir ./RepSauvegarde
for i in * do;
        if [ -d $i ]; then
                echo "copie de $i dans le répertoire de sauvegarde"
                mv -i $i ./RepSauvegarde/
        fi
done;
Je ne sais pas d'où ça vient, je n'arrive pas à corriger l'erreur.
Question annexe : comment faire pour obtenir le nombre de fichiers dans un répertoir ?
kromartien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2007, 11h39   #2
Rédacteur/Modérateur
 
Avatar de Michaël
 
Michaël Todorovic
Ingénieur systèmes et réseaux
Inscription : juillet 2003
Messages : 3 493
Détails du profil
Informations personnelles :
Nom : Michaël Todorovic
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : juillet 2003
Messages : 3 493
Points : 5 899
Points : 5 899
salut,
le ; de ton for est pas au bon endroit : il doit être avant le do.
Code :
1
2
3
4
5
6
7
8
#!/bin/sh
mkdir ./RepSauvegarde
for i in $(ls -1 repertoire*); do
        if [ -d $i ]; then
             echo "Déplacement de $i dans le répertoire de sauvegarde"
             mv -i $i ./RepSauvegarde/
        fi
done
si tu mets * dans la liste des cas du for, ça va déplacer tous les répertoires y compris le répertoire de sauvegarde. mets plutôt un ls ou find, ce sera mieux
Michaël est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2007, 11h42   #3
Expert Confirmé
 
Homme
Inscription : septembre 2006
Messages : 2 291
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2006
Messages : 2 291
Points : 2 738
Points : 2 738
Citation:
Envoyé par Michaël
salut,
le ; de ton for est pas au bon endroit : il doit être avant le do.
Code :
1
2
3
4
5
6
7
8
#!/bin/sh
mkdir ./RepSauvegarde
for i in $(ls -1 repertoire*); do
        if [ -d $i ]; then
             echo "Déplacement de $i dans le répertoire de sauvegarde"
             mv -i $i ./RepSauvegarde/
        fi
done
si tu mets * dans la liste des cas du for, ça va déplacer tous les répertoires y compris le répertoire de sauvegarde. mets plutôt un ls ou find, ce sera mieux
… et cela ne marchera pas si certains fichiers ont des noms avec des espaces…

-> "$i"
JeitEmgie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2007, 16h44   #4
Membre émérite
 
Inscription : juin 2006
Messages : 1 117
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2006
Messages : 1 117
Points : 989
Points : 989
Est ce que faire référence à des répertoires en utilisant la notation de chemin relatif fonctionne dans un script shell ?
EDIT Oui ça marche à partir du répertoire où est éxecuté le script. Merci beaucoup.
kromartien est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h55.


 
 
 
 
Partenaires

Hébergement Web