Pages : 1
#1 Le 14/12/2011, à 00:03
- louis3d
Script de Noël
Devant la crèche, sous le sapin, les souliers doivent se remplir... Qui donne à qui ? Ce petit script inutile permet de faire un tirage au sort. Faire une liste des membres de la famille nommée noms.csv, faire tourner le script et voilà !
#!/bin/bash
# On enlève les malins qui ont mis deux fois leur nom
cat noms.csv | sort | uniq > liste_donneurs.temp
# Au debut tous les donneurs sont receveurs
cp liste_donneurs.temp liste_receveurs.temp
cp liste_donneurs.temp liste_receveurs_new.temp
#
cat liste_donneurs.temp |while read i
do
#on fait une liste de receveurs sans le donneur, on mélange, on prend le premier -> c'est l'heureux élu !
heureux_elu=`cat liste_receveurs_new.temp | grep -v "$i" |sort -R |head -n1`
echo "$i donne à $heureux_elu" >> liste_finale.txt
# On met l'heureux élu dans la liste des déjà gatés :
echo "$heureux_elu" >> liste_gate.temp
# on fait une nouvelle liste de receveurs sans les gatés
test -f liste_receveurs_old.temp && rm liste_receveurs_old.temp
cat liste_receveurs.temp > liste_receveurs_old.temp
cat liste_gate.temp >> liste_receveurs_old.temp
sort liste_receveurs_old.temp | uniq -u > liste_receveurs_new.temp
done
#on fait le ménage
rm liste_receveurs.temp liste_receveurs_new.temp liste_receveurs_old.temp liste_gate.temp liste_donneurs.temp
Le résultat est dans liste_finale.txt
Dernière modification par louis3d (Le 14/12/2011, à 00:46)
Hors ligne
#2 Le 14/12/2011, à 00:08
- sputnick
Re : Script de Noël
dès la première ligne ca foire : on utilise uniq seulement après avoir utilisé sort.
Je ne lit pas la suite
Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. Confucius
https://sputnick.fr
Hors ligne
#3 Le 14/12/2011, à 00:30
- louis3d
Re : Script de Noël
Ca ne foire pas, mais effectivement c'est mieux avec !
Merci
Hors ligne
#4 Le 14/12/2011, à 01:04
- sputnick
Re : Script de Noël
Ca ne foire pas, mais effectivement c'est mieux avec !
Merci
Si ça foire, puisque tu n'élimine pas les doublons comme annoncé.
Concernant les autres soucis :
- l'usage de `` est déprécié en faveur de la forme $() : c'est plus lisible et moins bugué (essaye d'imbriquer plusieurs `` tu comprendra)
- trop de redirections, tu devrais utiliser des variables
- ne pas utiliser cat lorsque l'appli suivante dans le pipe peut très bien lire ce fichier :
cat liste_donneurs.temp |while read i
cat noms.csv | sort
- pas besoin de tester un fichier à supprimer avec rm
- description incomplète de ce que fait le script et le format d'entrée
Ça fait caca en gros et ça me donne pas envie de l'utiliser
Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. Confucius
https://sputnick.fr
Hors ligne
#5 Le 14/12/2011, à 11:05
- analogfaz
Re : Script de Noël
Bon courage louis3d,
les remarques de sputnick me semblent constructives.
Hors ligne
#6 Le 14/12/2011, à 11:23
- louis3d
Re : Script de Noël
C'est vrai je reconnais, c'est brouillon et "premier jet"
Merci pour les conseils.
Hors ligne
Pages : 1