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 :

Commande bash dans fichier sh


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2003
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 8
    Par défaut Commande bash dans fichier sh
    Bonjour,

    J'aimerais faire une recherche du mot "toto" dans le fichier liste et juste afficher. Pour le moment.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for data in "grep toto liste "{
            print data
    }
    Mais j'ai toujours le message d'erreur
    extra characters after close-quote
    Quelqu'un pourrait il m'aider ?

    Merci à vous

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par pilpoile Voir le message
    Bonjour,

    J'aimerai faire une recherche du mot "toto" dans le fichier liste et juste afficher.
    C'est pile poil la fonctionnalité de base de 'grep' !!!


    Pour le moment.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for data in "grep toto liste "{
            print data
    }
    Mais j'ai troujours le message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extra characters after close-quote
    Quelqu'un pourrait il m'aider ?
    Merci à vous
    Pour "corriger" ce script (ksh), tout en en gardant l'esprit (pour peu que cela ait un sens):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for data in $(grep toto liste) ; do
            print "${data}"
    done
    mais tu risques d'avoir quelques petites surprises quant au résultat...

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2003
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 8
    Par défaut
    Bonjour Jack-ft

    La vache !!! super rapide la reponse

    Je viens de tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for data in $(grep toto liste) ; do
            print "${data}"
    done
    Malheureusement j'obtiens cette erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    can't read "(grep toto liste)": no such variable
        while executing
    "for data in $(grep toto liste) "
        (file "./liste.sh" line 15)
    Merci pour ton aide !

    Pilpoile

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Si $(...) n'est pas reconnu, essaye comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for data in `grep toto liste` ; do
            print "${data}"
    done
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par pilpoile Voir le message
    La vache !!! super rapide la reponse
    Oops! Dans un premier temps, j'ai lu un peu trop vite et esquivé le "p"...

    Malheureusement j'obtiens cette erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    can't read "(grep toto liste)": no such variable
        while executing
    "for data in $(grep toto liste) "
        (file "./liste.sh" line 15)
    Il faut savoir que les commandes de ton script "./liste.sh" sont interprétées par un shell qui ne dépend pas de l'extension de ton fichier mais qui est:
    - soit celui mentionné dans la toute première ligne de ton script si c'est un shebang, c'est-à-dire si elle est de la forme #!/bin/bash ou #!/bin/sh ou autre
    - soit par une copie du shell courant si tu le lances depuis un terminal et dont tu peux obtenir le nom en tapant au terminal ps | fgrep $$ par exemple.

    Quel shell utilises-tu?
    Es-tu contraint à un shell donné?
    Dans quel environnement travailles-tu?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2003
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 8
    Par défaut
    Bonsoir messieurs

    Merci pour vos reponses.

    En fait je suis dans un environement linux et en shell j'ai
    #!/usr/bin/expect

    C'est là que je vois que ça ne va pas.
    Il faudrait plutot que je demande de l'aide pour executer des commandes sh dans un environement expect, c'est ça ?

    Je ne suis pas trop familiarisé avec les environements Linux.

    Merci

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 831
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 831
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par pilpoile Voir le message
    Bonsoir messieurs

    Merci pour vos reponses.

    En fait je suis dans un environement linux et en shell j'ai
    #!/usr/bin/expect

    C'est là que je vois que ça ne va pas.
    Il faudrait plutot que je demande de l'aide pour executer des commandes sh dans un environement expect, c'est ça ?

    Je ne suis pas trop familiarisé avec les environements Linux.

    Merci
    Salut

    Pour simplifier, chaque script indique quel doit être le programme chargé de l'analyser.
    Ainsi si ton script commence par #!/bin/sh, il sera alors lu/traité par le binaire /bin/sh (Bourne Shell). En revanche s'il commence par #!/bin/bash il sera alors traité par le binaire /bin/bash (Bourne Again Shell).
    C'est afin que chaque utilisateur, travaillant dans le shell de son choix, puisse quand-même exécuter un script écrit dans un autre shell que le sien. Bien entendu ça ne peut fonctionner que si ta machine possède le binaire invoqué mais comme tous sont installés de façon standardisée, il y a généralement pas de souci.

    Toi ton script est exécuté par /bin/inspect. Je ne connais pas ce truc mais d'après ce que je lis sur le net (http://envrac.blogdns.net/systmes/ex...on_de_taches_u), il semblerait qu'il s'agisse d'un automate encapsulant le shell. Donc à priori tu peux taper des commandes shell classiques y compris le fameux for data in `grep toto liste` demandant à instancier une boucle sur la chaine affichée par la commande grep (via l'usage des backquotes).

    Toutefois le for se calant sur l'espace pour séparer ses éléments, si le grep renvoie des lignes avec des espaces tu auras de gros soucis. Perso je recommanderais plutôt la structure suivante utilisant le read (lui-même se calant sur le <return> pour séparer les éléments)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    grep toto liste |while read data
    do
        echo $data
    done
    ...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par pilpoile Voir le message
    En fait je suis dans un environement linux et en shell j'ai
    #!/usr/bin/expect

    C'est là que je vois que ça ne va pas.
    Il faudrait plutot que je demande de l'aide pour executer des commandes sh dans un environement expect, c'est ça ?
    D'après ce que je vois sur wikipedia, il me semble qu'il faudrait plutôt t'adresser à des experts Tcl.

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

Discussions similaires

  1. [Batch] Commandes wmic dans fichier batch
    Par tonio17 dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 23/05/2015, 23h00
  2. [Batch] commande "bash" dans PuTTY depuis un fichier batch
    Par Hanooman dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 18/07/2012, 20h11
  3. Réponses: 2
    Dernier message: 05/10/2011, 09h11
  4. Commandes écrites dans fichier texte suite à un spool
    Par sebduth dans le forum Sql*Plus
    Réponses: 0
    Dernier message: 01/10/2010, 15h14
  5. Extraire des lignes d'un fichier en commande bash
    Par newnew dans le forum Linux
    Réponses: 3
    Dernier message: 27/07/2004, 16h22

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