Amélioration de script (boucle et autre) [BASH] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 18-12-2008 à 11:41:44
Histoire de se faire une idée, tu pourrais poster un bout de fichier conf pour pidgin et les messages d'erreur que te sort ton script ? ![[:opus dei] [:opus dei]](https://forum-images.hardware.fr/images/perso/opus dei.gif)
Marsh Posté le 18-12-2008 à 11:45:21
en fait je n'ai pas d'erreur de conf, c'est simplement que pidgin ne considera pas l'entrée  \ comme valide dans la gestion d'un code de smiley si celui ci n'est pas échappé, c'est hélas par empirisme que j'ai appris cela. 
je vais voir si éventuellement pidgin n'a pas un peu progressé de manière a ce que je puisse utiliser des "" pour les codes de smileys. 
 
pour un fichier de conf de pidgin cela donne ceci  
 
| Citation :   | 
 
je me demande d'ailleurs si il ne faut pas echapper également les espaces tiens...
Marsh Posté le 18-12-2008 à 11:48:38
Le fichier que je considère d'origine pour la gestion des smileys a sa syntaxe similaire
| Citation : 
 | 
j'ai explicitement rajouté le caractère *, afin de pouvoir utiliser cut plus facilement :D
de même j'échappe dès ce moment là le \ afin qu'il soit correctement inséré.
par ailleurs tu peux noter que certains smileys ont 4 codes, comment parser cela facilement dans une boucle ?
un while $code="" fonctionnerait
en incrémentant le -f du cut mais après pour récupérer mes codes ? je fais comment ?
$code($i) ?
Marsh Posté le 18-12-2008 à 11:49:19
tu peux traiter tes lignes d'entrées en les passant dans un script sed du genre: 
| Code : 
 | 
 
en gros, tu remplaces chaque "\" par "\\"  
 
 
peux pas tester mon sed ici, mais ça devrait le faire je pense ![[:dawa] [:dawa]](https://forum-images.hardware.fr/images/perso/dawa.gif) 
 
 
Pour le while, je comprends pas trop la question en fait ![[:god] [:god]](https://forum-images.hardware.fr/images/perso/god.gif)
Marsh Posté le 18-12-2008 à 11:59:35
sed: -e expression n°1, caractère 8: commande `s' inachevée 
sed: -e expression n°1, caractère 8: commande `s' inachevée 
avec  
| Citation : ajout_fichier_pidgin () {  | 
 
 
pour le while j'avais édité mon post précédent  
 
Marsh Posté le 18-12-2008 à 12:08:40
grmphbl ... 
 
fais voir ton fichier d'origine (celui que tu cherches à parser), chuis sur que ça peut se faire bien plus facilement que ton usine à gaz  
 
 
pour le sed, faudrait essayer sans doubler les "\", je sais plus s'il le fait automatiquement ou pas  
 
 
| Code : 
 | 
 
 
pis remplacer ces immondes `...` par $(...) ![[:romf] [:romf]](https://forum-images.hardware.fr/images/perso/romf.gif)
Marsh Posté le 18-12-2008 à 12:14:20
et donc maintenant avec
| Citation : code1=$(echo $code1 |sed 's@\@\\@g' ) | 
j'ai droit a du 
| Citation : sed: -e expression n°1, caractère 8: commande `s' inachevée | 
le fichier d'origine
| Smile.png*:)*:-)  | 
Marsh Posté le 18-12-2008 à 12:20:56
bon c'est résolu pour le \ 
par le biais de http://forum.hardware.fr/hfr/OSAlt [...] 1933_1.htm \o/ 
 
j'ai mis cela : 
| Citation : FILTRE='s/\\/\\\\/'  | 
Marsh Posté le 18-12-2008 à 12:21:15
il reste ma boucle maintenant wedge 
Marsh Posté le 18-12-2008 à 12:24:04
le fichier a jour :o)
| Code : 
 | 
Marsh Posté le 18-12-2008 à 12:41:46
ouaip ![[:prodigy] [:prodigy]](https://forum-images.hardware.fr/images/perso/prodigy.gif) 
 
 
en fait, tu devrais construire ta variable contenant la ligne à écrire au préalable, et ne faire l'echo qu'au dernier moment  
 
1. tu parses chaque ligne en découpant, le découpage surnuméraire te rendra une variable vide si le code n'existe pas  :
 : 
| Code : 
 | 
 
 
2. ensuite, tu formattes ta ligne en fonction de l'IM: 
| Code : 
 | 
 
 
3. Tu écris tes lignes dans tes fichiers de conf : 
| Code : 
 | 
 
 
Et tu mets tout ça dans ta boucle while 
Marsh Posté le 18-12-2008 à 13:33:15
Ce genre de truc c'est moche et c'est le mal : 
 
| Code : 
 | 
 
 
Si c'est vraiment des numériques il mieux utiliser "-eq" et pas "==" pour une chaine de caractère. 
Mais de toute façon dans ce cas précis j'utiliserais un truc avec "case" : 
| Code : 
 | 
Marsh Posté le 18-12-2008 à 13:56:22
je rappelle que je suis nul en bash  
 
bon j'adopte le case  de hrolf dans un premier temps, 
ensuite on va intégrer les modifs de wedge 
Marsh Posté le 18-12-2008 à 13:57:56
http://www.python.org 
 
De rien ![[:cerveau dr] [:cerveau dr]](https://forum-images.hardware.fr/images/perso/cerveau dr.gif) 
 
 
(et sérieusement, tu te prends la tête à utiliser bash là ou un truc un poil plus avancé serait tellement plus adapté, maintenable, et lisible)
Marsh Posté le 18-12-2008 à 14:00:45
| e_esprit a écrit : http://www.python.org  | 
 
Il code TRES peu, uniquement en Bash et a besoin d'une solution right here, right now. 
Il a pas le temps d'apprendre le python (mais si t'as le code tout fait, vas-y fépété)
Marsh Posté le 18-12-2008 à 14:15:44
| Fork Bomb a écrit :   | 
 
Ok Mikala 
Marsh Posté le 18-12-2008 à 14:26:26
| Code : 
 | 
bon voila pour l'instant après l'intégration de case \o/
on va voir pour la suite après la balade.
Pour le python ou le perl je ne connais pas *du* tout :/
Marsh Posté le 18-12-2008 à 14:58:35
wedge> bon j'ai copié/collé tes trucs et je vais relire car il y a quelques soucis  
 
pour le fichier psi 
| Citation :   | 
 
pour le fichier gajim 
| Citation :   | 
 
Marsh Posté le 18-12-2008 à 20:01:39
set -eu 
 
 
première ligne 
 
cd $repertoiredest 
 
déjà si ça foire ça t'es mal.
Marsh Posté le 18-12-2008 à 20:26:01
ouep un petit test de retour serait pas mal  
 
 
if [ $? -eq 0 ] ... ( "$?"  c'est le test du code retour de la commande  )
 ) 
Marsh Posté le 18-12-2008 à 20:37:57
Je peux jouer en Python ? ![[:cerveau dr] [:cerveau dr]](https://forum-images.hardware.fr/images/perso/cerveau dr.gif)
Marsh Posté le 18-12-2008 à 20:42:16
T'as un bug là : 
|   | 
 
y a un * en trop à la fin  
 
Marsh Posté le 18-12-2008 à 21:27:55
| Code : 
 | 
Ton fichier source doit s'appeller origine.txt 
Je pense pas que ce soit plus dur à maintenir que ton script bash 
Marsh Posté le 18-12-2008 à 21:37:56
![[:jar jar] [:jar jar]](https://forum-images.hardware.fr/images/perso/jar jar.gif)
je le savais !
Marsh Posté le 18-12-2008 à 23:52:33
bon, il est clairement plus simple et puissant que mon pauvre bash ![[:totoz] [:totoz]](https://forum-images.hardware.fr/images/perso/totoz.gif)
Marsh Posté le 18-12-2008 à 11:34:22
Bon voila,
après avoir quelque peu galéré dans la gestion des paquets de smileys HFRCerveau j'ai décidé de mettre ne place un script bash permettant de faciliter un tant soit peu la maintenance de l'ensemble: le paquet de smileys actuelle gère 5 clients de messagerie instantanée différente avec évidemment des différences claires au niveau des fichiers de configuration et parfois des particularités pour certains (mon regard se tourne notamment vers pidgin!)
A l'heure actuelle je bute sur deux choses :
un code du genre \o/ ne sera pas pris en compte par pidgin car le \ n'est pas échappé
il faudrait donc récupérer la valeur du code avant de l'insérer dans le fichier texte correspondant.
je pensais m'en sortir en me servant de 'expr substr' afin de récupérer la première lettre mais j'ai probablement des erreurs de syntaxe
je la trouve un peu lourde il doit je pense être possible d'améliorer la chose.
Je n'ai pas fait ce script en perl/python/ruby/whatelse car je ne les connaits pas du tout, d'ailleurs je ne connais que peu le script bash
le script a l'heure actuelle (pondu dans la nuit d'hier soir)
Message édité par mikala le 18-12-2008 à 11:41:49
---------------
Intermittent du GNU