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 :

Question script Shell


Sujet :

Shell et commandes GNU

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 10
    Par défaut Question script Shell
    Bonjour,

    j'essaye de bidouiller un peu sur le shell de Linux pour apprendre, et je suis face à un mystère.
    J'ai trouvé ce scripte :

    Code : 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
    24
    25
    26
    27
    28
    29
    30
    31
    #! /bin/bash 
     
    EXTENSION=$1 
     
    function crerep() 
    { 
            if  mkdir $1$2 2> /dev/null;then 
                    echo "le dossier "$1$2" n'existe pas, je le créé" 
            else 
                    NB=$2 
                    NB=$((NB+1)) 
                    crerep $1 $NB 
            fi 
    } 
     
    if [ -z $EXTENSION ];then 
            echo -n "Donne l'extension à trier : " 
            read $EXTENSION 
    fi 
     
    if [ ! -d $EXTENSION ];then 
            crerep $EXTENSION 
    fi 
     
    for VARIABLE in $(ls -1 *.$EXTENSION) 
            do 
                    mv $VARIABLE $EXTENSION 
                    echo "je deplace "$VARIABLE 
            done 
     
    exit 0
    Je crois qu'il y a une erreur dedans, et je ne comprends pas ni ou elle est , ni ce que ce scripte fait vraiment en fait .
    Est-ce qu'il range dans différents répertoires les dossiers nommés ? Il trie ?
    Merci de votre aide

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 635
    Par défaut
    Bonjour,

    ce script est mal écrit !
    si tu ne le comprends pas, ne t'en sers pas.
    si c'est un exercice, relis tes cours.

    sinon :
    • énumère tes besoins
    • écris ce que tu peux faire
    • et, alors, ouvre un nouveau sujet portant sur ce qui te pose problème.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 10
    Par défaut
    Bonsoir,

    Merci de ta réponse

    En fait je pense comprendre les petits éléments, c'est le but final du scripte qui m'échappe.

    Je maitrise les bases.

    J'ai trouvé ce petit scripte sur des archives d'un cours d'informatique. Mais je n'en suis pas personnellement.

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 801
    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 801
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Magea Voir le message
    Code : 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/bash 
    
    EXTENSION=$1 
    
    function crerep() 
    { 
            if  mkdir $1$2 2> /dev/null;then 
                    echo "le dossier "$1$2" n'existe pas, je le créé" 
            else 
                    NB=$2 
                    NB=$((NB+1)) 
                    crerep $1 $NB 
            fi 
    } 
    
    if [ -z $EXTENSION ];then 
            echo -n "Donne l'extension à trier : " 
            read $EXTENSION 
    fi 
    
    if [ ! -d $EXTENSION ];then 
            crerep $EXTENSION 
    fi
    Je crois qu'il y a une erreur dedans, et je ne comprends pas ni ou elle est , ni ce que ce scripte fait vraiment en fait .
    Est-ce qu'il range dans différents répertoires les dossiers nommés ? Il trie ?
    Merci de votre aide
    Bonjour

    Il y a 2 erreurs (en rouge)
    1) la fonction crerep attend 2 paramètres ($1$2) mais on ne lui en passe qu'un seul ($EXTENSION)
    2) on ne met pas "$" quand on charge une variable avec read

    Sinon c'est un script (pas de "e") qui range les fichiers ayant une certaine extension dans un dossier du nom de l'extension (par exemple il range dans le dossier "mp3" tous les fichiers ".mp3")
    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]

  5. #5
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 283
    Par défaut
    Bonjour,

    J'ai l'impression que dans un dossier contenant des jpg, png et gif, il s'agit de créer des dossiers nommés jpg, png et gif et de déplacer les fichiers ayant ces extensions dans les dossiers correspondants. Le script est de toute façon mal écrit.

  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 335
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bonjour

    Il y a 2 erreurs (en rouge)
    1) la fonction crerep attend 2 paramètres ($1$2) mais on ne lui en passe qu'un seul ($EXTENSION)
    2) on ne met pas "$" quand on charge une variable avec read

    Sinon c'est un script (pas de "e") qui range les fichiers ayant une certaine extension dans un dossier du nom de l'extension (par exemple il range dans le dossier "mp3" tous les fichiers ".mp3")
    Bonjour,
    Pour la première erreur, je ne suis pas sur que cela en soit une, car si on regarde la fonction elle-même, elle se rappelle avec le deuxième paramêtre si la création du répertoire échoue (en gros, on lui fourni l'extension, et elle crée quoi qu'il arrive un nouveau répertoire dont le nom est extension et si besoin indicé).
    Bon, cette fonction à interet à avoir acces en écriture pour pouvoir le créer son répertoire sinon la pile du shell risque de souffrir

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 10
    Par défaut
    OK je comprends mieux.

    Merci beaucoup de votre aide !

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 801
    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 801
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Pour la première erreur, je ne suis pas sur que cela en soit une, car si on regarde la fonction elle-même, elle se rappelle avec le deuxième paramêtre si la création du répertoire échoue (en gros, on lui fourni l'extension, et elle crée quoi qu'il arrive un nouveau répertoire dont le nom est extension et si besoin indicé).
    Ah oui, j'avais pas tilté ce détail.
    Bigre, utiliser la récursivité là où une simple boucle avec un test suffirait... Je me demande qui est l'auteur de cette oeuvre...
    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.

Discussions similaires

  1. Script shell
    Par anzar dans le forum Linux
    Réponses: 4
    Dernier message: 03/12/2004, 14h41
  2. [JSP] script shell
    Par goolix dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 06/08/2004, 09h08
  3. Exécution d'un script shell
    Par Manu0086 dans le forum Linux
    Réponses: 8
    Dernier message: 15/06/2004, 16h31
  4. Explication script shell
    Par crasho007 dans le forum Linux
    Réponses: 2
    Dernier message: 14/06/2004, 13h54
  5. Cron + terminal + script shell
    Par nicolas.pissard dans le forum Linux
    Réponses: 3
    Dernier message: 17/03/2004, 09h24

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