Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1554 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  test sur chaine

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

test sur chaine

n°2011162
yartempion
Posté le 22-07-2010 à 21:01:14  profilanswer
 

Bonjour,
Voici un script

Code :
  1. #!/bin/bash
  2. for Module in  Module::Build XML::Simple Compress::Zlib Net::IP Digest::MD5 Net::SSLeay Compress::Raw::Zlib IO::
  3. Compress::Deflate URI IO::Uncompress::Gunzip IO::Uncompress::Inflate IO::Compress::Gzip IO::Uncompress::RawInfla
  4. te Compress::Raw::Bzip2 Compress::Raw::Zlib HTML::Tagset HTML::Parser XML::SAX XML::NamespaceSupport XML::Namesp
  5. aceSupport XML::SAX::Base XML::SAX::Expat XML::Parser Crypt::SSLeay IO::Socket::SSL Proc::Daemon Proc::PID::File
  6. HTTP::Status FusionInventory::Agent
  7. do
  8. echo "Valeur de Module = $Module"
  9. resultat=`perlmod -s $Module | grep "No results found."`
  10. echo "resultat avant $resultat"
  11. if [ $resultat = 'No results found.' ]
  12. then
  13. {
  14. echo "resultat apres $?"
  15. perlmod -i $Module
  16. echo "dedans"
  17. }
  18. else
  19. echo "Package disponible et resultat= $resultat"
  20. fi
  21. done
  22. exit 0


Quand j'affiche avec echo la variable resultat je constate bien la onne chaine mais avec la commande od on voit un caractere d'echappement juste devant qui est 0033 [ 0 m ou untruc du meme genre.
 Comment procéder pour eviter cela ou faire un test sur resultat qui soit pertinent?
Merci

mood
Publicité
Posté le 22-07-2010 à 21:01:14  profilanswer
 

n°2011223
aigles
Posté le 23-07-2010 à 09:18:18  profilanswer
 

Tu peux te contenter de tester la présence de la chaîne sans la récupérer.

Code :
  1. echo "Valeur de Module = $Module"
  2. if perlmod -s $Module | grep -q "No results found."`
  3. then
  4.    echo "Package non trouvé."
  5.    perlmod -i $Module
  6.    echo "dedans"
  7. else
  8.    echo "Package disponible."
  9. fi


 
Jean-Pierre.

n°2011292
yartempion
Posté le 23-07-2010 à 11:41:21  profilanswer
 

Oui merci effectivement ça marche
Y a t'il un moyen de modifier ce comportement et de supprimer ce caractere d'echappement?
Merci

n°2011368
Tuxerman12
Posté le 23-07-2010 à 15:39:33  profilanswer
 

Les scripteurs extraient des chaines avec sed souvent, pour éliminer tous les trucs superflus.

n°2011370
aigles
Posté le 23-07-2010 à 15:43:44  profilanswer
 

C'est ta commande perlmod qui génère des séquences escape pour faire formater les affichages (<esc>[1m pour mettre en gras ou reverse, <esc>[0m pour revenir en mode normal).
 
Tu peux essayer de forcer le type de terminal le temps de la commande perlmod pour voir si cela modifie les affichages; par exemple :

Code :
  1. TERM=TTY perlmod -s $Module

ou peut être tout simplement

Code :
  1. TERM= perlmod -s $Module


 
Jean-Pierre.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  test sur chaine

 

Sujets relatifs
détection d'un mot dans une chaine qu. que soit sa forme (Chat chAt)Manipuler une chaine de caractère
Taille d'une chaine dans un pdf (fpdf)javascript : test sur chaine de caractere
Test d'une chaine de caractèreTest de chaine inclu dans une autre
test d'une chaine de caractère?[vb] Probleme de test de chaine
[Algo/C] Grande chaine de caractères pour test d'un algorithme[VBA] test d'une chaine de caractère
Plus de sujets relatifs à : test sur chaine


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR