1 pièce(s) jointe(s)
Manipulation de dossiers et fichiers
Bonjour,
Je débute en bash et j'aimerai arriver au résultat ci dessous.
Pièce jointe 448607
Voici ce que j'ai fais jusqu'à maintenant et je bloque sur la partie ventilation.
Code:
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
#! /bin/bash
#fonction qui crée les dossiers et fichiers de départ
createdirfile(){
cd /home/fred/examen
mkdir Resultats Etudiants Bulletins Backup Palmares
cd /home/fred/examen/Resultats
echo -e "Michel 10\nFred 8" >> math
echo -e "Michel 20\nLuc 3\nPol 10\nFred 13" >> OS
echo -e "Luc 9\nMichel 14\nFred 19" >> analyse
echo -e "Luc 7\nMichel 18\nPol 4" >>DB
}
#fonction qui efface les dossiers et fichiers de départ
deldirfile(){
cd /home/fred/examen
rm -r Resultats Etudiants Bulletins Backup Palmares
}
#fonction qui boucle le fichier Resultats et récupère tous les noms de fichier qu'il contient dans un tableau.
recupfilename(){
cd ../Resultats
files=(*)
cd ..
}
#fonction qui boucle sur tous les fichiers du dossier Resultats et qui récupère
#les noms des Etudiants pour créer un fichier à leur noms dans le dossier Etudiants'
createfileEtudiants(){
cd /home/fred/examen/Etudiants
#boucle tous les fichiers du répertoire Résultats
for fic in `ls /home/fred/examen/Resultats/*`
do
#lis chaque ligne de chaque fichiers
while read ligne;
do
#récupère le premier mot -f1(nom etudiant) et crée un fichier avec son nom dans le dossier courant (xargs touch)
#xargs construit et exécute des lignes de commandes à partir de l'entrée standard.
echo $ligne | cut -f1 -d" " | xargs touch;
done < $fic
done
}
#menu de départ
echo "Entrez votre choix"
select choix in "Ventilation" "Bulletin" "Palmares" "Consultation" "Creation Documents" "Effacer Documents" "Quitter"
do
case "$REPLY" in
1) echo "Menu Ventilation"
recupfilename files
echo "${files[@]}"
createfileEtudiants;;
2) echo "Menu Bulletin";;
3) echo "Menu palmares";;
4) echo "menu Consultation";;
5) echo "Menu Création Document"
createdirfile;;
6) echo "Menu Effacer"
deldirfile;;
7) echo "Quitter"; break;;
esac
done |
je veux en gros:
lire ligne de mes fichiers cours avec les résultats.
dans chaque fichier cours, lire deux mots (nom et cote)
voir si premier mot (etudiant existe)
sinon le créer
ajouter le nom du cours et le note dans le fichier de l'étudiant.