Script shell : recherche char dans variable

Résolu
Bonjour,

J'ai mis le contenu d'une ligne d'un fichier dans une variable :

var=$(head -1 $1 | grep '^<.')

($1 est le fichier passé en argument dans la ligne de commande)

echo$var me donne :
<?xml version="1.0" encoding="UTF-8" ?>

Je cherche à verifier si les chaines "version" et "encoding" sont bien présentes dans ma variable.

en gros je ne sais pas comment faire pour rechercehr une chaine de caractere dans une variable

merci !

6 réponses

  1. Modérateur
    Salut,
    $ var='<?xml version="1.0" encoding="UTF-8" ?>'
    $ echo $var
    <?xml version="1.0" encoding="UTF-8" ?>
    $ egrep -o "version|encoding" <<< $var
    version
    encoding
    $
    ;-))
    1. Modérateur
      Attention toutefois, là tu voulais la syntaxe pour chercher une chaîne de caractères dans une variable.

      Par contre la syntaxe donnée avec "egrep" recherche la chaîne "version" OU la chaîne "encoding", de ce fait si seulement une seule des 2 chaînes est présente, le code retour de "egrep" est "VRAI".

      Si ta condition doit tester la présence des 2 chaînes, alors passe le tout à "wc -l" et base ta condition sur le nombre de lignes retournées...
      $ egrep -o "version|encoding" <<< $var | wc -l
      2
      
      ;-))
      1. Bonjour,

        question très bête .. dans la commande :
        egrep -o "version|encoding" <<< $var | wc -l
        pourquoi <<< ?
        je vois très bien la signification pour << mais <<< je sèche

        ++
        Poulpoul
      2. J'ai enlevé le ou (|) et je vérifie séparément la présence des ceux chaînes
        encore merci pour ton aide jipicy !
    2. Modérateur
      < fichier		redirection depuis un fichier
      < <(commande)		redirection depuis une commande
      <<< $variable		redirection depuis une variable
      ;-))
      1. merci beaucoup pour l'info
        je ne connaissais pas du tout
        encore merci
        ++
        Poulpoul