IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

script shell: problème avec le caractère espace


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2006
    Messages : 47
    Points : 25
    Points
    25
    Par défaut script shell: problème avec le caractère espace
    j'ai un petit souci avec le caractère espace dans mon script shell.
    voici mon script:

    #! /bin/sh
    OPTIONS="-x -z 2 -b \"dc=dr8,dc=cnrs,dc=fr\""
    FILTER="\"cn=toto caca\""
    ATTRS="cn mail"
    #affichage de la requète ldap
    echo "ldapsearch $OPTIONS $FILTER $ATTRS"
    # on effectue la requète
    ldapsearch $OPTIONS $FILTER $ATTRS
    # si l'on décommente la ligne suivante, la requete marche
    #ldapsearch -x -z 2 -b "dc=dr8,dc=cnrs,dc=fr" "cn=toto caca" cn mail

    voici le résultat:
    # extended LDIF
    #
    # LDAPv3
    # base <"dc=dr8,dc=cnrs,dc=fr"> with scope sub
    # filter: "cn=toto
    # requesting: caca" cn mail
    #

    ldapsearch: ldap_search_ext: Bad search filter (-7)

    le problème est dû au fait que le filtre "cn=toto caca" est coupé en 2.
    en effet, si je décommente la dernière ligne de mon script, on obtient le resultat suivant:
    # extended LDIF
    #
    # LDAPv3
    # base <"dc=dr8,dc=cnrs,dc=fr"> with scope sub
    # filter: cn=toto caca
    # requesting: cn mail
    #
    ...
    avez vous une idée là dessus?
    merci,

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 262
    Points
    12 262
    Par défaut
    comme tout autre caractère spécial l'espace se backslash "\ " pour éviter les soucis c'est en général tout à fait suffisant

    tu peux aussi mettre la chaine "dfdfsdfds fdssdfds" dans une variable
    et l'appeler comme ${TOTO} pour avoir son contenu non interprété

    vérifies les syntaxes en fonction du shell utilisé ! c'est pas forcément partout pareil

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2006
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par frp31
    comme tout autre caractère spécial l'espace se backslash "\ " pour éviter les soucis c'est en général tout à fait suffisant

    tu peux aussi mettre la chaine "dfdfsdfds fdssdfds" dans une variable
    et l'appeler comme ${TOTO} pour avoir son contenu non interprété

    vérifies les syntaxes en fonction du shell utilisé ! c'est pas forcément partout pareil
    le fait de backslasher l'espace ne fonctionne pas, même en protégeant les variable avec des accolades ${FILTER}.
    en effet, si je change mon filtre:
    FILTER="\"cn=toto\ caca\""
    j'ai le résultat suivant:
    ...
    # filter: "cn=toto\
    # requesting: caca" cn mail
    ...

    as-tu une autre idée?

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    C'est dans l'utilisation de ta variable que tu dois protéger les espaces. Pas dans son affectation.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ldapsearch $OPTIONS "$FILTER" $ATTRS

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2006
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    merci ripat, tu t'imagine même pas comment ça me fais plaisir que tu ai trouvé la solution.
    moi qui pensait passer ma journée à galérer là dessus, finalement elle ne commence pas si mal.

    merci encore,

    ++

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2017
    Messages : 29
    Points : 26
    Points
    26
    Par défaut
    ldapsearch $OPTIONS "$FILTER" $ATTRS

    avec une autre commande, comme un CD , cela donnerait :
    cd "/appl/toto beurk"

    Mais dans une boucle FOR ?
    la commande cd "/appl/toto beurk" inclue dans une variable ne fonctionne plus :

    variable=cd "/appl/toto beurk"
    for
    $variable
    done

Discussions similaires

  1. Script shell - problème avec date
    Par spartiates59 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 18/08/2011, 18h15
  2. Réponses: 2
    Dernier message: 11/08/2011, 16h34
  3. Réponses: 2
    Dernier message: 22/09/2009, 16h37
  4. [VB script] Problème avec le caractère &
    Par eraim dans le forum VBScript
    Réponses: 1
    Dernier message: 01/12/2006, 12h19
  5. problème avec le caractère saut de ligne ...
    Par vbcasimir dans le forum Administration
    Réponses: 2
    Dernier message: 17/06/2004, 16h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo