Script shell et affichage "bufferisé" - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 20-12-2011 à 16:19:33
Au lieu d'écrire sur stdout tu balances dans un fichier, et à la fin, tu fais un cat de ce fichier
Marsh Posté le 20-12-2011 à 17:00:23
C'est un workaround valide
Mais bon, si y avait moyen de le faire "nativement"
Marsh Posté le 20-12-2011 à 17:38:11
Normalement y a la commande stdbuf qui devrait pouvoir aider, mais en pratique j'ai pas réussi à en tirer quoique ce soit.
Marsh Posté le 20-12-2011 à 18:49:22
j'avais trouvé setbuf pour le codage en C, je suppose que ça doit son pendant shell.
Je regarderais ça au taf
Marsh Posté le 20-12-2011 à 19:08:49
sinon il doit être possible de bidouiller un script rapidement vers lequel rediriger la sortie qui bufferise comme tu le souhaites.
Genre ça, ça le fait :
Code :
|
Résultat (tout est affiché d'un coup) :
Citation : $ ./test.sh | ./buffer.py |
Marsh Posté le 20-12-2011 à 19:13:53
ça pourrait le faire en l'intégrant directement dans le script (histoire que je n'ai pas à faire le pipe sur la ligne de commande), faut juste que j'ai python sur la machine...
thanks
Marsh Posté le 20-12-2011 à 11:01:52
Bonjour,
En shell (bash), de manière simple comment je peux faire ça :
-> j'interroge un routeur pour récupérer plusieurs stats.
-> je voudrais afficher tout d'un coup et pas ligne par ligne, sinon je me prends la latence de chaque requête une par une, c'est gonflant. Je préfère attendre un peu plus au départ et tout avoir à la fin d'un coup.
-> on va me dire d'utiliser des variables, oui c'est ce que je fais pour 50% des valeurs récupérées sauf que :
1. avec SNMP dans certains cas je suis obligé d'itérer pour analyser un ensemble de stat.
2. du coup je ne peux pas stocker de manière propre le tout dans une belle variable dont je ferais un echo $variable à la fin.
Peut-on faire 2. de manière "dynamique", je ne connais pas d'avance le nombre de valeur à stocker ?
Existe-t-il une méthode "affichage dans un buffer et balance du buffer quand on veut" ?