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 :

[bash] set avec guillemets protecteurs


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2
    Par défaut [bash] set avec guillemets protecteurs
    Bonjour,

    J'ai un premier script qui me sort 2 chaînes de caractères, éventuellement protégées par des guillemets si elles contiennent un espace.

    Dans un autre script, j'ai besoin d'affecter ces chaînes de caractères à deux variables.
    J'ai essayé de récupérer ces chaînes dans $1 et $2 avec la commande set :
    Mais set traite les guillemets comme des caractères normaux...
    comme le montrent les exemples

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set -- $(echo "AZE RTY UIO") ; echo "$2"
    RTY
    Mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set -- $(echo "AZE \"RT Y\" UIO") ; echo "$2"
    "RT
    Pourtant c'est bien la commande set qui permet à bash de récupérer les paramètres positionnels d'une commande et ceux-ci peuvent bien être protégés par des guillemets. Donc il doit y avoir moyen de faire en sorte que set respecte ces guillemets.

    Voyez-vous comment faire ?

  2. #2
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Citation Envoyé par mgrdbis
    Bonjour,
    Pourtant c'est bien la commande set qui permet à bash de récupérer les paramètres positionnels d'une commande et ceux-ci peuvent bien être protégés par des guillemets. Donc il doit y avoir moyen de faire en sorte que set respecte ces guillemets.

    Voyez-vous comment faire ?

    Une solution --> ftp://ftp-developpez.com/eric-sanchis/IntroProgBash.pdf (page 23)
    La variable prédéfinie du shell IFS contient les caractères séparateurs de mots dans une commande. Par défaut, ce sont les caractères espace, tabulation et interligne. L’initialisation de IFS est effectuée par bash.
    Le shell utilise le premier caractère mémorisé dans IFS (par défaut, le caractère espace) pour séparer les différents paramètres de position lorsque la syntaxe "$*" est utilisée. En modifiant la valeur de IFS, l’utilisateur peut changer ce caractère séparateur.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sauve_IFS=$IFS
    IFS=:
    set - $(var1="1 1 1"; var2="2"; echo $var1":"$var2) ; echo "$2"
    2
    IFS=$sauve_IFS

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2
    Par défaut
    Merci pour votre solution.

    En fait le même problème se pose dans un cas où je ne contrôle pas la sortie du premier script.

    Connaissez-vous une solution qui tient vraiment compte des guillemets protecteurs ?

Discussions similaires

  1. [VB6]Property Get/Set avec groupe de contrôles
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 24/01/2006, 12h09
  2. find() de std::set avec fonction de comparaison
    Par Biglo dans le forum SL & STL
    Réponses: 3
    Dernier message: 13/01/2006, 08h50
  3. [MySQL] sql et texte avec guillemets
    Par licorne dans le forum PHP & Base de données
    Réponses: 21
    Dernier message: 24/12/2005, 21h49
  4. Script bash : Pb avec sed
    Par fred64 dans le forum Linux
    Réponses: 3
    Dernier message: 19/08/2005, 11h24
  5. Probleme avec guillemets dans commande HREF
    Par angelevil dans le forum ASP
    Réponses: 4
    Dernier message: 02/05/2005, 19h06

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