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 :

Débutant : Problème de compréhension d'un script


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 38
    Points : 35
    Points
    35
    Par défaut Débutant : Problème de compréhension d'un script
    Bonjour à tous,
    je suis un débutant en script bash et j'ai des difficultés à comprendre un script, pouvez vous m'aidez?

    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
    #!/bin/bash
    FICHIER=resultat #ici la variable FICHIER prend pour mot resultat
    MOTS="terre eau air feu" #Ici MOTS prend la phrase "terre eau air feu"
    if [ -f $FICHIER ]  # ici on vérifie que $FICHIER est bien de type fichier? 
    then
            echo "Erreur"  # ici je ne comprend pas: la variable $FICHIER est déjà initialisé avec le mot resultat
            exit 1 #que signifie exit 1?
    fi
    for i in *.txt # ici on pour chaque fichier trouvé....
    do
            res= `wc -l $i` # ....on compte le nombre de lignes du texte
            echo "$res" >> $FICHIER # le chiffre trouvé est mis à la fin du fichier $FICHIER
    done
    echo >> $FICHIER # Que fait l'echo? est ce qu'il met un saut à la ligne?
    for i in $MOTS
    do
            echo "$i" >> $FICHIER # ajoute la ligne "terre eau air feu" à la fin du fichier $FICHIER
    grep $i *.txt >> $FICHIER # rechercher le titre "terre eau air feu".txt et l'écrire à la suite de $FICHIER?
            echo >> $FICHIER # Que fait l'echo? est ce qu'il met un saut à la ligne?
    done
    En résumé je ne sais pas du tout à quoi sert ce script, quelqu'un pourrait il m'aider à comprendre?
    Merci d'avance.

  2. #2
    Membre averti Avatar de FRUiT
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2011
    Messages : 83
    Points : 337
    Points
    337
    Par défaut
    Tu sembles confondre un peu fichiers et variables.

    La variable "FICHIER" contient le mot "resultat". Le mot "resultat" peut tout aussi bien être du texte brut, qu'un fichier sur le disque par exemple.

    [ -f "$FICHIER" ] vérifie si il existe bien un fichier nommé "resultat" dans le répertoire courant.

    Si le fichier n'existe pas, "exit 1" termine le script sans exécuter le reste des commandes, avec un code d'erreur 1.

    res= `wc -l $i`
    A mon avis là il y a une erreur de recopie du script il n'y a jamais d'espace en le = de déclaration d'une variable et la valeur de celle ci.

    echo >> foo.txt ajoute bien une ligne vide au fichier foo.txt

    grep $i *.txt >> $FICHIER # rechercher le titre "terre eau air feu".txt et l'écrire à la suite de $FICHIER?
    Non, grep va chercher tour à tour chacun des mots de la variable MOTS, et ajouter la ligne (entière) contenant le mot dans le fichier, de nom "resultat"
    Neon Suite by FRUiT (kde4.6) http://tinyurl.com/yzm7cee
    "Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
    clean

  3. #3
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i in *.txt # ici on pour chaque fichier trouvé....
    do
    res= `wc -l $i` # ....on compte le nombre de lignes du texte
    echo "$res" >> $FICHIER # le chiffre trouvé est mis à la fin du fichier $FICHIER
    done
    pouvait se résumer à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for i in *.txt ; do wc -l $i >> $FICHIER ; done

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 38
    Points : 35
    Points
    35
    Par défaut
    Merci pour vos lumières, je comprend mieux le code à présent.
    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Problème de compréhension?
    Par k o D dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 25/10/2007, 08h48
  2. [Débutante] Problème de fonctionnement d'un script
    Par laroche1 dans le forum MATLAB
    Réponses: 16
    Dernier message: 24/10/2007, 10h10
  3. [Débutant] Problème de compréhension
    Par Invité dans le forum Langage
    Réponses: 4
    Dernier message: 09/11/2006, 13h06
  4. [Débutant] Problème de Script
    Par FREMY dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 26/08/2005, 14h00
  5. [Débutant] problème de compréhension
    Par Sylvester dans le forum Général Java
    Réponses: 18
    Dernier message: 21/07/2005, 09h16

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