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 ?
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
Pour le while, je comprends pas trop la question en fait
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 $(...)
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
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
(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 ?
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
je le savais !
Marsh Posté le 18-12-2008 à 23:52:33
bon, il est clairement plus simple et puissant que mon pauvre bash
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