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 :

Différence entre cde="commande" $cde et commande


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    bul
    bul est déconnecté
    Membre confirmé Avatar de bul
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 195
    Par défaut Différence entre cde="commande" $cde et commande
    bonjour à toutes et à tous,
    j'avoue ne pas comprendre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #!/bin/sh
    find '.' -iname '*.sh' -exec grep -Hin 'if' {} \;
    cde='find "." -iname "*.sh" -exec grep -Hin "if" {} \;'
    $cde
    la commande find fonctionne
    mais $cde donne l'erreur :
    find: paramètre manquant pour « -exec »
    une explication ?
    j'ai tenté d'inverser les " et les ', sans succès.
    merci d'avance.

  2. #2
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    ça tient à l'échappement, donc au choix :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cmde='find . -type f -exec grep machin {} \;'
    eval $cmde
    ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cmde='find . -type f -exec grep machin {} ;'   # sans echapper le point-virgule final
    $cmde

  3. #3
    bul
    bul est déconnecté
    Membre confirmé Avatar de bul
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 195
    Par défaut
    merci BufferBob, ça baigne.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 659
    Par défaut
    Bonjour,

    c'est une mauvaise pratique de mettre une commande aussi complexe dans une variable.

    utilise une fonction à la place.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    bul
    bul est déconnecté
    Membre confirmé Avatar de bul
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 195
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    mauvaise pratique...utilise une fonction à la place.
    quel intérêt ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 659
    Par défaut
    Citation Envoyé par bull
    quel intérêt ?
    adopter la meilleure méthode !

    et pas besoin d'eval.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par bul Voir le message
    quel intérêt ?
    Une fonction, c'est fait pour. L'appel d'une fonction est lisible et respecte la grammaire du shell.

    Une variable, c'est fait pour stocker des données, éventuellement des arguments.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Différence entre ADO.net LINQ et commandes SQL
    Par ramzichouchan dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 01/07/2015, 16h49
  2. Différence entre deux commande basées sur git push
    Par poussinvert dans le forum GIT
    Réponses: 5
    Dernier message: 22/05/2014, 17h35
  3. Réponses: 4
    Dernier message: 19/02/2014, 14h39
  4. Différence entre commands et command
    Par jo385 dans le forum Général VBA
    Réponses: 3
    Dernier message: 02/07/2008, 10h54
  5. Différence entre commands.getoutput() et os.popen()
    Par alison239 dans le forum Général Python
    Réponses: 3
    Dernier message: 07/03/2006, 10h52

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