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] Mettre le contenu d'un fichier dans une variable


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 12
    Points : 10
    Points
    10
    Par défaut [bash] Mettre le contenu d'un fichier dans une variable
    Bonjour,
    J'ai un fichier contenant une commande rsync et une variable rsync dans mon script bash

    J'aimerai savoir comment faire pour mettre le contenu du fichier dans la variable

    J'ai essayé rsync < /Donnees/RSYNC/rsync.txt
    mais quand j'exécute $rsync
    il me met qu'il y a une erreur de syntaxe pour la commande rsync et qu'il faut voir le man de rsync

    Voilà :-)
    J'espère que quelqu'un pourra m'aider

  2. #2
    Membre confirmé Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Points : 515
    Points
    515
    Par défaut
    Bonjour,

    N'utilises pas de variables qui porte le même nom qu'une commande existante car ici le shell redirige ton le contenu de ton fichier dans la commande rsync et non ta variable. De plus, cela sera plus clair pour toi et pour ceux qui reliront ton script...

    Si tu veux récupérer le contenu d'un fichier texte pour la mettre dans une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var=`cat fichier.txt`
    Si ensuite tu veux exécuter cette variable parce qu'elle contient une commande :
    Exemple sur ton rsync :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cmd=`cat /Donnees/RSYNC/rsync.txt`;$cmd
    ou dans un script sur plusieurs lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cmd=`cat /Donnees/RSYNC/rsync.txt`
    $cmd

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 596
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 481
    Points
    19 481
    Par défaut
    ce sera plus rapide ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cmd="$(</Donnees/RSYNC/rsync.txt)"
    $cmd
    et ça ne fait pas d'uuoc en Bash.

  4. #4
    Membre confirmé Avatar de mptijr
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    408
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 408
    Points : 503
    Points
    503
    Par défaut
    Beniou : ton explication est plus claire car je pense que Tipié doit être un débutant en programmation bash.

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 596
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 481
    Points
    19 481
    Par défaut en Bash
    L'explication de Beniou serait plus valable s'il ne faisait pas d'uuoc (j'insiste, car il faut en finir avec ça en Bash).
    C'est un pléonasme: ça semble utile pour expliquer rapidement le fonctionnement du pipe, mais ce n'est pas une pratique à prodiguer pour un usage courant du Bash.


    même/surtout les débutants ont droit à ce que ne leur soit pas donné, comme point de départ, des c.../erreurs.

    ...
    Voilà, maintenant, j'suis tout énervé !

    --
    les uuoc sont un non-sense non drôle !

  6. #6
    Membre confirmé Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Points : 515
    Points
    515
    Par défaut
    Oula mon but n'était pas d'énerver des personnes dans l'assemblée...

    Effectivement, je comprends mieux maintenant ce qu'est l'uuoc. Merci N_BaH.

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut cas uuoc
    Bonjour.
    Si l'on doit éviter l'abus d'utilisation du cat, comment fait-on alors pour passer le contenu d'un fichier dans une variable y compris les retours chariots et saut de lignes ?
    J'aimerais avoir un résultat identique dans les 2 cas A et B.
    J'ai un fichier texte.txt
    contenu de texte.txt -> variable
    A- cat texte.txt
    B- echo $variable

  8. #8
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 311
    Points : 12 830
    Points
    12 830
    Par défaut
    Le problème n'est pas la source ici, c'est comment afficher la cible qui pose soucis, par principe on utilise une variable en l'encadrant de guillemet ou alors on c'est pourquoi on ne le fait pas.

  9. #9
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 596
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 481
    Points
    19 481
    Par défaut
    il faut toujours* mettre le développement d'une variable entre guillemets. TOUJOURS !

    --
    * à moins de savoir pourquoi.
    et, pourquoi voudrais-tu mettre le contenu d'un fichier dans une variable ?

  10. #10
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 311
    Points : 12 830
    Points
    12 830
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    et, pourquoi voudrais-tu mettre le contenu d'un fichier dans une variable ?
    Peut être pour occuper la mémoire...

  11. #11
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 596
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 481
    Points
    19 481
    Par défaut
    en fait, le fichier est le produit de la redirection d'une commande.
    et c'est pour parcourir le contenu du fichier avec une boucle for que macheja veut le mettre dans une variable.

    avec disedorgue

Discussions similaires

  1. [Débutant] recuperer le contenu d'un fichier dans une variable.
    Par Warlox dans le forum VB.NET
    Réponses: 1
    Dernier message: 18/12/2011, 17h34
  2. Réponses: 5
    Dernier message: 18/04/2011, 14h26
  3. Réponses: 3
    Dernier message: 28/05/2009, 16h27
  4. [Batch] Stocker le contenu d'un fichier dans une variable
    Par grandthor dans le forum Scripts/Batch
    Réponses: 10
    Dernier message: 15/04/2009, 09h47
  5. Mettre le contenu d'un TMemo dans une variable
    Par beral dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/08/2006, 01h57

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