IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Un prog en bourne shell


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 90
    Points : 47
    Points
    47
    Par défaut Un prog en bourne shell
    Bonjour à tous,
    Mon problème n'a pas trop sa place sur ce forum, car c'est un programme en script shell que je souhaite réaliser.
    Pour me placer dans le contexte, je suis une formation à distance de programmeur et pour l'un des devoir que je dois rendre, il m'est demandé d'écrire en Bourne shell.

    La Question qui m'est demandée est la suivante: Écrire un programme en Bourne shell qui rangera dans le répertoire courant les fichiers en fonction de leur extension. Le programme créera les dossiers qui porteront le nom de l’extension du fichier.
    par ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ls
    tuc1.c truc2.c cherche.pas dossier
    on lance notre programme et celui-ci range tout bien
    J'ai déjà creusé un peu la question, j'ai quelques pistes mais rien de bien concret. Si l'un d'entre vous pouvais me venir en aide, je lui serai très reconnaissant.

    Merci

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 90
    Points : 47
    Points
    47
    Par défaut
    Les Quelques pistes que j'explore sont une boucle for, demande l'arborescence du répertoire courant. Le programme doit récupérer le nom des extension des fichiers, et créer à l'aide d'un bon vieux mkdir les répertoires portant le nom de l'extension de fichier. Ces-dernier qui devront être déplacé dans ceux-ci. grace a un mv *.ext ./ext
    Voilà j'ai quelques commandes de base, Mais je ne vois pas trop comment syntaxer tout ça.
    J'ai penser à un piège qui pourrait exister:
    - Création du répertoire alors qu'il existe déjà et par conséquent, suppression du fichier qui était dedans.
    Merci de votre aide



    j'ai récupéré ce script que j'ai bidouillé et qui marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for i in /home/user/Dropbox/EDUCATEL/PRATIQUE_UNIX\/dev4/;
        do
          test ${i##*.} = 'sql'
          then
            do_truc()
        mkdir 'sql'
          elif test ${i##*.} = 'gnagna'
            do_machin()
        mv *.gnagna 'sql'
          fi
        done

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    Bonjour,

    Création du répertoire alors qu'il existe déjà et par conséquent, suppression du fichier qui était dedans.
    non, si le répertoire existe déjà, cela affichera une erreur, et cela ne fera rien.

    Tu pourrais nous exposer clairement ton algorithme.

    et, lis un tuto (notamment celui indiqué dans ma signature, pour commencer), au lieu d'essayer de repiquer des scripts récupérés à droite à gauche.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 90
    Points : 47
    Points
    47
    Par défaut
    Merci pour ces liens, qui vont m'être fort instructifs je pense. Du coup en effet je reprends mon problème au départ et je pars d'un Algorithme. Je travaille dessus
    La suite à venir...

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 90
    Points : 47
    Points
    47
    Par défaut
    J'ai avancé un peu sur mon problème,
    j'ai trouvé la commande pour récupérer l'extension des fichiers dans le répertoire courant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ls -C | sed 's/.*\.//g'
    Mon hic maintenant, Je n'arrive pas à stocker le résultat obtenu dans une autre variable. Comment faire ? Faut-il un pipe ?
    J'ai besoin des caractères de l'extension afin de créer un répertoire du même nom.
    Merci à tous, bon début de semaine

  6. #6
    Membre averti Avatar de Mandraxx
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2011
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 182
    Points : 410
    Points
    410
    Par défaut
    Bonjour,

    Je pense que lister les fichiers est un peu plus délicat dans le sens où ta commande va aussi lister les dossier que tu pourrais avoir créé avec une précédente instance.

    Ensuite reste le problème des fichiers qui n'ont pas d'extension car cette information reste optionnelle.

    Je te conseille donc plutôt la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ls -l | grep ^- | awk '{print $9}' | grep '\.' |  sed 's/.*\.//g'
    Traduction : je liste en format long pour avoir un max d'infos, le premier grep me permet de sélectionner uniquement les entrées commençant par '-' (fichiers conventionnels) puis le awk transforme le flux en n'extrayant que la colonne 9 (nom du fichier); là dessus, le second grep exclut tout fichier qui ne comporte pas de '.' dans son nom => pas d'extension et enfin, on applique ton sed pour ne récupérer que l'extension.

    Après pour répondre plus directement à ta question : pour exploiter le résultat de cette commande, il faut l'affecter à une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    EXTENSIONS=$(ls -l | grep ^- | awk '{print $9}' | grep '\.' |  sed 's/.*\.//g')
    Dans les tutos fournis par N_BaH, tu trouveras ensuite comment faire un for in do done

    @+
    Le choix motivé par le seul argument de modernité est intrinsèquement dépourvu de créativité.

  7. #7
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    ON N'UTILISE PAS ls DANS LES SCRIPTS !!!

    eh, mandraxx,
    encore un cut et tu pouvais prétendre concourir pour la pire ligne de commande. grrr.
    grep, sed, et awk peuvent tous les trois établir des correspondances avec un motif, donc un seul devrait suffire.
    mais de toutes façons, on n'utilise pas ls dans les scripts, justement pour éviter ce genre de code, et si les fichiers ont des espaces dans leurs noms, le champ $9 ne renverra pas le nom complet.

    donc, boucle for !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    Membre averti Avatar de Mandraxx
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2011
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 182
    Points : 410
    Points
    410
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    ON N'UTILISE PAS ls DANS LES SCRIPTS !!!
    ...
    de toutes façons, on n'utilise pas ls dans les scripts, justement pour éviter ce genre de code, et si les fichiers ont des espaces dans leurs noms, le champ $9 ne renverra pas le nom complet. donc, boucle for !
    Oui, tu as tout à fait raison, mais je ne voulais pas décourager un débutant qui a trouvé un début de solution (c'est forgeant qu'on devient forgeron comme on dit) et juste mettre en évidence les difficultés que cela engendre pour conduire aux bonnes pratiques.

    Citation Envoyé par N_BaH Voir le message
    eh, mandraxx,
    encore un cut et tu pouvais prétendre concourir pour la pire ligne de commande. grrr.
    grep, sed, et awk peuvent tous les trois établir des correspondances avec un motif, donc un seul devrait suffire.
    lol
    J'avoue que j'ai eu la flemme de chercher le motif complexe qui fera tout ça d'un seul coup vu qu'on n'en a pas besoin si on n'utilise pas ls

    @+
    Le choix motivé par le seul argument de modernité est intrinsèquement dépourvu de créativité.

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 90
    Points : 47
    Points
    47
    Par défaut
    Cool Merci Mandraxx
    Je vais manger un bout et tester tout ça

  10. #10
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 90
    Points : 47
    Points
    47
    Par défaut
    Mais si c'est pas très correct d'utiliser la commande ls dans un script, qu’utilise-t-on ?

    J'ai un peu avancé sur mon script, par contre il n'est pas opérationnel. rrrh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #!/bin/bash
     
     
    EXTENTIONS=$(ls -C | sed 's/.*\.//g') # affecte le nom des extensions des fichier du dossier à la variable EXTENTIONS
     
    echo $EXTENTIONS #optionnel
    if [ -f $EXTENTIONS ]; then               #Si le dossier existe
    mv *.$EXTENTIONS $EXTENTIONS   #alors déplacé le fichier d'extention *.ext dans dossier extle                                                    
    elif                                                  #sinon
    mkdir $EXTENTIONS                       #crée le dossier portant le nom de l'extension
    mv *.$EXTENTIONS $EXTENTIONS   #déplacé le fichier d'extention *.ext dans dossier extle                                                  
    fi
    Je n'ai pas reussi à intéger le code que tu m'a laissé Mandraxx. Par contre je m'en suis inspiré pour déclarer et affecter ma variable.EXTENSIONS. Mais ça marche pas

  11. #11
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    Mais si c'est pas très correct d'utiliser la commande ls dans un script, qu’utilise-t-on ?
    on utilise le Développement des chemins, dans ton cas avec une boucle for.
    et, pour extraire les extensions, on utilise le Remplacement des paramètres, comme dans le script que tu voulais adapter.

    attention -f, teste si un fichier est un fichier régulier, pas si un fichier est un dossier (regarde help test).
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  12. #12
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 90
    Points : 47
    Points
    47
    Par défaut
    voila un scriptt qui est la correction de mon devoir, mais il ne fonctionne pas, pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #/bin/sh
    for fichier in 'ls *.*'
    do	if [-f $fichier –a –r $fichier]
    		then
    			suffixe='echo $fichier  cut –f2 –f'
    			if! [-d $suffixe]
    				then
    					echo le repertoire $suffixe a ete cree
    					mkdir $suffixe
    			fi
    			mv $fichier $suffixe
    			echo le fichier $fichier a ete deplace dans $ (suffixe).
    		fi
    done
    quand je lance mon rpogramme le terminal me repond:
    user@K73E:~/Dropbox/EDUCATEL/PRATIQUE_UNIX/dev4$ sh question3
    [: 14: ls: unexpected operator

    Merci de votre aide

  13. #13
    Membre averti Avatar de Mandraxx
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2011
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 182
    Points : 410
    Points
    410
    Par défaut
    Bonjour,

    Je suppose que tu as recopié ce script qui a du t'être fourni imprimé sur papier non ?

    La substitution pour exécuter une commande ne se fait pas avec une quote mais avec le caractère produit par AltGr+7 (je ne me rappelle jamais de son petit nom ).

    Après, si je comprends bien ce code, je dirais qu'il faut un pipe à la place du &61679; (bizarre ça ) et un -d'.' à la place du deuxième -f de cut.

    Bon, dès que tu as quelque chose qui marche, il faut essayer d'aller plus loin pour progresser : suis les conseils de N_BaH et essaye de modifier ton script pour utiliser le Développement des chemins et là, tu auras un résultat robuste.

    Astuce : la plupart des shells proposent une option de debug bash -x fichier.sh, tu peux l'utiliser pour suivre le comportement du code et ainsi comprendre comment réagit le système.

    @+
    Le choix motivé par le seul argument de modernité est intrinsèquement dépourvu de créativité.

  14. #14
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 247
    Points : 473
    Points
    473
    Billets dans le blog
    1
    Par défaut
    Et il faut aussi laisser un espace apres le [ et un avant le ] dans les tests.

  15. #15
    Membre habitué Avatar de Levi59
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 58
    Points : 148
    Points
    148
    Par défaut
    c'est une correction qui vient de où? parce que le for i in `ls ...`, c'est loin d'être une bonne habitude...
    Carpe Diem

  16. #16
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 90
    Points : 47
    Points
    47
    Par défaut
    en effet il y a eu un problème dans le copier coller  correspond bien à un pipe "|"
    J'ai placé des espaces entre les crochets du test.
    Mais le programme ne se lance toujours pas, le terminal m’écrit:
    "user@K73E:~/Dropbox/EDUCATEL/PRATIQUE_UNIX/dev4$ sh question3
    [: 14: ls: unexpected operator"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #/bin/sh
    for fichier in 'ls *.*'
    do	if [ -f $fichier –a –r $fichier ]
    		then
    			suffixe='echo $fichier | cut –f2 –f'
    			if ![-d $suffixe]
    				then
    					echo le repertoire $suffixe a ete cree
    					mkdir $suffixe
    			fi
    			mv $fichier $suffixe
    			echo le fichier $fichier a ete deplace dans $suffixe.
    		fi
    done

  17. #17
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sk8trasher Voir le message
    en effet ya eut un probleme dans le copier coller  correspond bien à un pipe "|"
    J'ai placé des espaces entre les crochets du test.
    Mais le programme ne se lance toujours pas, le terminal m’écrit: "user@K73E:~/Dropbox/EDUCATEL/PRATIQUE_UNIX/dev4$ sh question3
    [: 14: ls: unexpected operator"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #/bin/sh
    for fichier in 'ls *.*'
    do	if [ -f $fichier –a –r $fichier ]
    		then
    			suffixe='echo $fichier | cut –f2 –f'
    ...
    On te l'a dit: l'expansion des commandes c'est le backquotte et non la quotte simple !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #/bin/sh
    for fichier in `ls *.*`
    do	if [ -f $fichier –a –r $fichier ]
    		then
    			suffixe=`echo $fichier | cut –f2 –f`
    ...
    C'est ce qui arrive quand on recopie bêtement un source sans avoir appris la syntaxe.

    Accessoirement tu auras tout avantage à utiliser la nouvelle écriture $(...) qui permet d'imbriquer plus facilement des expansions dans d'autres expansions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #/bin/sh
    for fichier in $(ls *.*)
    do	if [ -f $fichier –a –r $fichier ]
    		then
    			suffixe=$(echo $fichier | cut –f2 –f)
    ...
    PS: je ne vois pas trop ce qu'est sensé faire le cut -f2 -f (sans rien derrière)...

    Citation Envoyé par sk8trasher Voir le message
    J'ai placé des espaces entre les crochets du test.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #/bin/sh
    for ...
    do	if [ -f $fichier –a –r $fichier ]
    		then
    			...
    			if ![-d $suffixe]
    Ouais, ça se voit !!!

    Bon, allez, je le tape parce que ça m'énerve trop ce "corrigé" totalement foiré. On ne sait pas qui des deux (entre le prof ou l'élève) est le pire...

    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #/bin/sh
    # Boucle sur tous les fichiers ayant un "." dans leur nom
    for fichier in *.*
    do
    	# Si le fichier est de type régulier et qu'on peut le lire
    	if [ -f "$fichier" -a -r "$fichier" ]
    	then
    		# Récupération de la chaine contenue après le "."
    		suffixe=`echo "$fichier" | cut -f2 -d.`
     
    		# Si le dossier correspondant à cette chaine n'existe pas
    		if [ ! -d "$suffixe" ]
    		then
    			# On le crée (putain si par malheur un truc ayant le même nom existe... mais je ne suis pas là non plus pour tout faire !!!)
    			mkdir "$suffixe"
    			echo "le repertoire $suffixe a été créé"
    		fi
     
    		# On déplace le fichier dans le dossier (tant pis si ce n'est pas un dossier)
    		mv "$fichier" "$suffixe"
    		echo "le fichier $fichier a été déplacé dans $suffixe."
    	fi
    done
    Voilà. Tu n'as plus qu'à faire ctrl-c+ctrl-v. Eventuellement apprendre tes leçons serait un plus mais c'est toi qui voit...

    Citation Envoyé par N_BaH Voir le message
    on utilise le Développement des chemins, dans ton cas avec une boucle for.
    On utilise "find -maxdepth 1"
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  18. #18
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    apprendre tes leçons serait un plus
    bof, bof. Si les leçons sont au niveau du corrigé...
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  19. #19
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 90
    Points : 47
    Points
    47
    Par défaut
    Merci pour ces corrections, je n'arrive pas à lancer le programme pour autant.En revanche cette source me parait plus juste que la version que j'ai posté.
    Quand je lance le programme celui ci me répond: " unexpected operator" pour chaque fichier à déplacer. Il ne crée pas non plus les répertoire.

    Je suis preneur si vous avez des sites références sur la programmation en Bourne shell.
    En faite je pense pas que ce soit la correction, c'est juste une aide, voilà pourquoi des syntaxes peuvent vous paraître aberrante.

    Je continue à chercher une solutions. affaire à suivre...

  20. #20
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sk8trasher Voir le message
    Merci pour ces corrections, je n'arrive pas à lancer le programme pour autant.
    Quand je lance le programme celui ci me répond: " unexpected operator" pour chaque fichier à déplacer. Il ne crée pas non plus les répertoire.
    Une erreur due au copier/coller. J'ai tapé cet exemple en utilisant certaines lignes (qui me semblaient bonnes) du tien alors qu'il était probablement lui-même issu d'un traitement de texte style Word. Certains caractères ont été mal écris. Ils semblent bons visuellement mais ne le sont pas.
    Reprends chaque ligne "test" et réécris les tirets (-a -r etc...). Tu les réécris réellement => tu les effaces et tu les remets !!!

    De mon coté j'ai repassé mon code dans mon post précédent. Tu peux de nouveau le copier/coller, cette fois il marchera.

    Citation Envoyé par sk8trasher Voir le message
    En revanche cette source me parait plus juste que la version que j'ai posté.
    C'est exactement la même à ces détails près que
    1) il y a des commentaires (tu verras que ce n'est jamais du temps perdu que d'en mettre)
    2) la syntaxe est respectée (espaces quand il faut, etc)
    3) les commandes utilisées sont écrites avec les bons arguments (-d et non -f etc)

    Citation Envoyé par sk8trasher Voir le message
    Je suis preneur si vous avez des sites références sur la programmation en Bourne shell.
    http://fr.lang.free.fr/cours/Shell_v2.0.pdf
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. bourne shell init de tableau
    Par pcouas dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 08/09/2011, 22h00
  2. bourne shell ajout d'argument depuis le shell à ceux reçus en entrée
    Par pcouas dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 07/09/2011, 08h08
  3. tester l'existence d'une variable en bourne SHELL
    Par nicolas.pailheret dans le forum Linux
    Réponses: 1
    Dernier message: 14/04/2009, 17h28
  4. Code en bourne shell du jeu Le "PENDU"
    Par piment dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 20/07/2007, 14h17
  5. Fonction until en bourne shell
    Par alexp dans le forum Linux
    Réponses: 4
    Dernier message: 05/07/2006, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo