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 :

Variable de shell affectee dans awk


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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
    Par défaut Variable de shell affectee dans awk
    Bonjour,

    Je cherche a affecter dans awk une variable precedemment definie dans mon script, mais je ne trouve pas la syntaxe correcte :

    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
    
    var=2
    
    awk -F';' '
        BEGIN {
            tata=$1
            var = $tata
        }
        END '
    
    ## Ici, le script continue, et var vaut le contenu de tata.
    Pourriez-vous m'aider pour la ligne en rouge ?

    Merci
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

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

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

    Ta demande n'es pas claire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    varBash=2
    awk -F' ' -v varAwk=$varBash '{uneVar=$1; varBash=uneVar; print uneVar,varBash,varAwk }' <<<"tra lla la"
    tra tra 2
    ...
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Citation Envoyé par gangsoleil Voir le message
    Bonjour,

    Je cherche a affecter dans awk une variable precedemment definie dans mon script, mais je ne trouve pas la syntaxe correcte :

    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
    
    var=2
    
    awk -F';' '
        BEGIN {
            tata=$1
            var = $tata
        }
        END '
    
    ## Ici, le script continue, et var vaut le contenu de tata.
    Pourriez-vous m'aider pour la ligne en rouge ?

    Merci
    Attention que les $ ne sont utilisé que pour les variables "colonnes" ( $0 étant la ligne complete, $1,$2 ... étant les colonnes ) donc lorsque tu fais var = $tata, c'est comme si tu remplaçait cela par var=$0.

    Tu dois simplement fait faire

    var = tata pour affecter le contenu de la variable tata dans la variable et faire var = "tata" pour affecter la chaine de caractères tata dans la variable var

  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
    Par défaut
    Bonjour,

    Je précise ma demande en simplifiant l'exemple :

    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
     
    var=2
     
    awk -F';' '
        BEGIN {
            var=3
        }
        END '
     
    ## Ici, le script continue, et var vaut 3.
    Est-ce plus clair ?
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  5. #5
    Membre expérimenté
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 248
    Par défaut
    Ce quet tu peux faire, c'est comme derniere instruction du bloc END de ta procédure AWK c'est rajouter la ligne suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    END {
    ....
    ....
    ....
    printf("%s", var);
    }
    Et dans ton script tu appelle ton awk:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    VAR=`awk -f tonscript.awk ....`
    echo "VAR=$VAR"

  6. #6
    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
    Par défaut
    Merci pour ta solution.

    J'avoue que j'avais la meme en utilisant exit (ce qui limite le retour a une valeur numerique inferieure a 256), mais je cherchais s'il existait un autre moyen de faire.

    Mais a priori, je ne pense pas que cela soit possible, de par le fait que le processus awk ne peut avoir acces a l'espace memoire du script.

    Tant pis pour moi (et mes idees etranges), et merci a vous.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

Discussions similaires

  1. [shell] références dans les variables
    Par tiresias54 dans le forum Administration système
    Réponses: 3
    Dernier message: 23/12/2011, 17h51
  2. Réponses: 1
    Dernier message: 24/02/2011, 10h37
  3. Récupérer bitrate video dans une variable en shell
    Par ruman dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 24/06/2009, 08h13
  4. [Script KSH]Afficher une variable dans awk
    Par Rizzen dans le forum Linux
    Réponses: 3
    Dernier message: 11/05/2009, 13h51
  5. récupérer des variables d'un fichier dans un shell
    Par chloro69 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 11/03/2008, 14h49

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