Salut à tous,
J'ai un super TP à faire en shell script, c'est un système de chat. Tous les clients se écrivent dans un fichier commun placé dans /tmp, et ils le surveillent avec un tail pour obtenir les nouveaux messages. Il y a plein de super routines pour se connecter et écrire, mais ce n'est pas vraiment ce qui nous intéresse ici.
En fait, il faut arriver à surveiller la connexion d'un pote, et lorsque c'est le cas, lui envoyer un gentil message. J'ai donc cherché et trouvé une ligne de commande qui pourrait correspondre :
tail -n 0 -q -f $GLOBALFILE | awk "/^$POTE/ {print \" [$PSEUDO] Salut $POTE !\"}" >> $GLOBALFILE |
Cette commande fonctionne correctement, c'est à dire que lorsque j'écris dans le fichier global une ligne commençant par $POTE il va bien écrire dans le fichier global "Salut $POTE" avec mon pseudo derrière. Seulement il ne l'écrit que lorsque je termine le tail via kill -15 ... donc ça ne me sert à rien, puisqu'il va écrire tous les coucous à la fin de la session.
Pire : si je met cette ligne dans un script, et que j'interrompt le script via CTRL-C, rien n'est écrit. J'aimerais savoir s'il existe un moyen de forcer l'écriture de manière synchrone, pour que la redirection se fasse systématiquement lorsqu'une ligne est envoyée à tail et ensuite à awk. J'ai tenté un petit "sync" mais rien n'est écrit dans le fichier ... ce doit être un problème que les dev shell ont dû rencontrer souvent .
Merci de votre aide,
Fred