Pages : 1
#1 Le 13/12/2011, à 23: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 13/12/2011, à 23:46)
Hors ligne
#2 Le 13/12/2011, à 23: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
Il existe un tunnel obscur dans la lumière infinie. Lao-Tseu
https://sputnick.fr
Hors ligne
#3 Le 13/12/2011, à 23: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, à 00: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
Il existe un tunnel obscur dans la lumière infinie. Lao-Tseu
https://sputnick.fr
Hors ligne
#5 Le 14/12/2011, à 10:05
- analogfaz
Re : Script de Noël
Bon courage louis3d,
les remarques de sputnick me semblent constructives.
Hors ligne
#6 Le 14/12/2011, à 10: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