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 12/04/2011, 17h12   #1
Futur Membre du Club
 
Inscription : novembre 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 38
Points : 15
Points : 15
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 :
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.
developman est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 12/04/2011, 17h51   #2
Membre éclairé
 
Avatar de FRUiT
 
Homme
Inscription : février 2011
Messages : 83
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2011
Messages : 83
Points : 326
Points : 326
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

Citation:
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
FRUiT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 19h54   #3
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 534
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
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 : 3 534
Points : 7 743
Points : 7 743
Code :
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 :
for i in *.txt ; do wc -l $i >> $FICHIER ; done
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 22h20   #4
Futur Membre du Club
 
Inscription : novembre 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 38
Points : 15
Points : 15
Merci pour vos lumières, je comprend mieux le code à présent.
Cordialement.
developman est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h01.


 
 
 
 
Partenaires

Hébergement Web