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

Linux Discussion :

Traiter un fichier en ignorant les répétitions


Sujet :

Linux

  1. #21
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    Oui voici le code issu d'un exemple d'un site d'explication du bash
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/bin/bash
     
    # Référencement de variables indirectes.
    # Ceci a quelques-uns des attributs du C++.
     
     
    a=lettre_de_l_alphabet
    lettre_de_l_alphabet=z
     
    echo "a = $a"           # Référence directe.
     
    echo "Maintenant a = ${!a}"    # Référence indirecte.
    # La notation ${!variable} est bien supérieure à l'ancien "eval var1=\$$var2"
    Ceci est tiré de la page suivante : http://abs.traduc.org/abs-5.3-fr/ch34.html#ex78

  2. #22
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    Je reviens avec plus d'informations dont certaines me déroute énormément.
    • Sur Live-CD Ubuntu 9.04 le code présenter ci-dessus ne fonctionne pas
    • Executer directement dans un terminal ça fonctionne


    J'ai donc exécuter le code suivant dans un terminal avec succés (valeur toto) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a="test"; test="toto"; echo ${!a}
    Alors que le script suivant me retourne l'erreur Bad substitution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/bin/bash
     
    a="test"; test="toto"; echo ${!a}
    Maintenant je sais que cela ne viens pas de la machine mais peut être du script en lui même mais là franchement je sèche. Si une personne à une idée sur la question.

    Merci par avance.

  3. #23
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    Personne à une idée? Avec mon niveau novice je comprend pas la raison de cette différence.

    En attendant je vais chercher si une autre syntaxe d'indirection est possible, avec eval peut être...

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    mouais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    eval echo \${$a}
    toto
    reste que c'est bizarre ce qui t'arrive...
    ?

    As-tu réaffiché les variables $0 et $SHELL dans la console plutôt que depuis ton script ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #25
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    Merci pour la confirmation de syntaxe pour eval.

    Sinon pour revenir sur le bug
    echo $0 dans la console me retourne bash
    echo $SHELL dans la console me retourne /bin/bash

    Je viens de faire une installation toute fraiche de ubuntu 9.04 et le problème est identique que ce soit avant les premières mise à jour ou après. Etrange mais vous m'avez permis de trouver la solution que je cherchait.

    Sinon je suis en train de monter un petit script qui permet la création d'un dépôt local sur support usb pour pouvoir effectuer des installations et mise à jour sur des stations sans accès internet ou avec connection lente. La partie téléchargement d'un coté et installation d'un autre coté est automatique et basé sur une liste de paquet que l'utilisateur défini.
    Je pense finir ça d'ici 1 mois ou 2 maximum, est ce que je pourrait poster ce script sur le forum pour relecture par des gens plus aguérit?

    Dans tous les cas, une fois le script fini est exploitable de mon coté je compte le laisser à libre disposition pour les suivants, je m'inspire et/ou prend comme base d'autres scripts mis en ligne par d'autres utilisateurs.

  6. #26
    Membre actif
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2007
    Messages : 199
    Points : 291
    Points
    291
    Par défaut
    Peux tu donner la taille de ton /bin/bash ?
    Est que c'est un lien vers un autre programme ?
    Peux tu envoyer le résultat de la commande "env" ?

  7. #27
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    Oups, en tant que débutant j'ai repris le problème à sa plus simple cause et j'ai enfin trouvé.

    Au lieu de permettre l'execution du script je le lançais via la commande sh monscript.sh alors que j'aurai du utiliser la commande bash monscript.sh, la commande . ./monscript.sh lance également le script dans le shell courant (ici bash)... bon je pense que tout le monde ici le savait mais je viens tout juste de le découvrir

    Je me suis rappelé qu'en maintenance informatique, il m'arrive de chercher des solutions complexe pour des problèmes tout bête comme une panne électrique sur la prise en question ou sinon l'utilisateur qui confondait le bouton reset et power (si ça existe).

    En tout cas merci pour votre aide à tous, ça m'a sortie une belle épine du pied.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Citation Envoyé par percherie
    il m'arrive de chercher des solutions complexe pour des problèmes tout bête
    idem

    Pour moi il était entendu que ton script était exécutable...
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 6
    Dernier message: 30/03/2011, 17h17
  2. Réponses: 5
    Dernier message: 19/06/2008, 23h03
  3. awk - ignorer les commentaires d'un fichier
    Par wildmary dans le forum Linux
    Réponses: 5
    Dernier message: 30/10/2007, 15h31
  4. Réponses: 1
    Dernier message: 06/08/2007, 10h39
  5. Réponses: 6
    Dernier message: 05/08/2007, 07h15

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