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 :

interaction awk avec le script shell qui l'appelle


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut interaction awk avec le script shell qui l'appelle
    Ci dessous un bout de code dans script shell (ksh) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    awk '
            BEGIN {
     
            }
            {if ($1 == "***SNMP-START***") START = TRUE
            if(NR == 3) print($4,"",$5)
            if(NR == 5) specificType = substr($2, length($2),1)
     
     
      }' trap_formater_1_tabulation_sep.txt
    }
    Dans la commande j'initialise le variable specificType dont j'en ai besoin de l'utiliser en dehors de la commande awk c.a.d dans le script shell.

    d'où la question suivante ,comment faire pour exporter une valeur en dehors de la commande awk et l'importer dans le script shell .


    Merci en avance

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Bonjour,

    Tu ne peux pas. Du moins pas en restant avec de simples variables.

    Explication :
    Tu as un shell, dans lequel tu peux definir des variables. Celles-ci sont locales a ce processus.
    Ce shell offre une possibilite, qui est de lancer un programme externe. Ce dernier definira ses propres variables, qui ne seront accessibles qu'a lui. Ce programme externe peut, au mieux, renvoyer un code de retour qui indique si tout s'est bien passe ou non.

    Ce qui est possible de faire : passer une (ou plusieurs) valeur au programme appele.
    Pourquoi ? Simplement parce que tu vas les passer en argument au programme externe. Mais meme dans ce cas, pas de modification possible, pas de renvoi possible en dehors du code de retour.

    Solution : passer par un fichier, une base de donnees, une variable d'environnement, ...
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Membre éclairé Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Points : 823
    Points
    823
    Par défaut
    Bonjour,

    Je vais ajouter quelques commentaires a ceux de gangsoleil.

    Il est possible egalement d'utiliser les sockets et d'envoyer, depuis awk, les resultats: par exemple resultat_1 vers socket 3, resultat_2 vers socket 4... Puis de lire plus tard, depuis le script, les sockets. Je suis en vacances et je ne vais pas passer plus de temps la-dessus.

    Une alternative est de sortir les resultats simplement sur stdout avec un separateur, comme '@' par exemple. On obtient alors:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    resultats=$(awk 'BEGIN {OFS="@"} {...} END {print r1, r2}' fichier)
    r1=${resultats%@*}
    r2=${resultats#*@}
    Un problème bien posé est déjà résolu (H. Bergson).

  4. #4
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Je me complete egalement : comme tu ne peux pas passer la valeur de awk vers ton script, tu dois trouver un moyen de communiquer de l'information entre deux processus. Ci-dessous une liste non exhaustive de certains IPC (Inter Process Communication), dans laquelle tu peux piocher en fonction de tes besoins ou de tes contraintes.

    • signal
    • fichier
    • base de donnée
    • socket
    • mémoire partagée
    • file de messages
    • sémaphore
    • pipes
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    moi, j'suis assez fan du

    donc ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '...' | la suite du script
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    variable="$(awk '...')"
    ou encorevoili voila vois-tu

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/06/2008, 11h44
  2. Script shell qui appelle méthode Java ?
    Par babyboy dans le forum Linux
    Réponses: 3
    Dernier message: 17/08/2007, 01h45
  3. Problème avec mon script shell case in esac
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 28/06/2007, 22h54
  4. Script Shell qui lance un programme sur un ordi distant avec SSH
    Par bilibou dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 02/06/2007, 11h18
  5. Script shell qui change le repertoire courant
    Par Estats dans le forum Linux
    Réponses: 4
    Dernier message: 17/11/2005, 14h17

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