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 :

récupérer les sorties de toutes les sorties d'un script


Sujet :

Linux

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut récupérer les sorties de toutes les sorties d'un script
    Bonjour

    J'ai un script shell qui durant son exécution, il produit plusieurs fichiers de différents formats.

    J'aimerais récupérer toutes ses sorties pour les utiliser dans un autre script qui contient ce script et j'aimerais savoir s'il y a moyen pour le faire.

    exemple :

    script_1 produit 5 fichiers f1.txt f2.x f3.y f4.z f5.u

    script_2 contient script_1 et utilise les fichiers f1.txt f2.x f3.y f4.z f5.u pour d'autres fins.


    Merci d'avance de votre aide.

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    Ta questions n'est pas tres clair : qu'appelle tu "sortie" ?
    de l'affichage ?
    les fichiers resultant ?
    .....

    pour lire une sortie produite par un appelle a un script (1 ligne)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ligne=$(le script afficheur)
    traitement de $ligne
    pour lire un fichier en bash la syntaxes est du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while read ligne
    do
         echo "$ligne"
        ..... traitement
    done < fichier
    Marc
    Slackware for ever ......
    BASH - KSH ( http://marcg.developpez.com/ksh/ )

  3. #3
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Points : 1 001
    Points
    1 001
    Par défaut lire ou editer ?
    Hello qu'est ce que script_2 fait avec les fichiers produits par script_1 ?
    Si il ne fait que les afficher il suffit de cat ou file plus le nom du fichier aprés l'éxécution du premier script qui si j'ai bien compris est dans script 2 ?.
    On inclue une instruction file ou cat ou more aprés la partie des instructions dediées au script_1.
    Je ne sais pas si ma réponse convient car je n'ai pas bien compris.
    Bye
    Omnes Vulnerant Ultima Necat
    Bye

  4. #4
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Citation Envoyé par diamonds
    Bonjour

    exemple :

    script_1 produit 5 fichiers f1.txt f2.x f3.y f4.z f5.u

    script_2 contient script_1 et utilise les fichiers f1.txt f2.x f3.y f4.z f5.u pour d'autres fins.
    Il me semble que tu as posé la même question le 18.03 et que j'y ai répondu


    Script 1 produit 3 fichiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    #!/bin/bash
     
    # "debut script1.sh"
     
    #  traitement .../...
    File1="/chemin1/chemin11/fichier1"
    #  traitement .../...
    File2="/chemin2/chemin22/fichier2"
    #  traitement .../...
    File3="/chemin3/chemin33/fichier3"
     
    echo $File1 $File2 $File3
     
    # "fin script1.sh"

    script2 (qui contient script1) récupère le noms des fichiers dans la variable TabVar.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    #!/bin/bash
     
    # ... DEBUT Traitement script2 ...
     
    # Declaration d'une variable de type Tableau (array)
    declare -a TabVar=(`script1.sh`)
    > mail.dat	#-- initialisation du fichier mail.dat 
     
    if [[ ${#TabVar[*]} -eq 0 ]] ; then
    	echo "*** Pas de fichier cree !!!" >> mail.dat
    	MailObj="*** FATAL. Rapport `basename $0`"
    else
    	for Fic in `echo ${TabVar[*]}` ; do
    		echo "* repertoire : `dirname ${Fic}`, fichier : `basename ${Fic}`" >> mail.dat
    	done
    	MailObj="* Rapport `basename $0`"
    fi
     
    echo "$MailObj" 
    cat mail.dat
    exit
    mail -s "$MailObj" $2 < mail.dat
    Loi de Murphy:
    La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
    La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
    Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.

  5. #5
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par BlaireauOne
    Il me semble que tu as posé la même question le 18.03 et que j'y ai répondu


    Script 1 produit 3 fichiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    #!/bin/bash
     
    # "debut script1.sh"
     
    #  traitement .../...
    File1="/chemin1/chemin11/fichier1"
    #  traitement .../...
    File2="/chemin2/chemin22/fichier2"
    #  traitement .../...
    File3="/chemin3/chemin33/fichier3"
     
    echo $File1 $File2 $File3
     
    # "fin script1.sh"

    script2 (qui contient script1) récupère le noms des fichiers dans la variable TabVar.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    #!/bin/bash
     
    # ... DEBUT Traitement script2 ...
     
    # Declaration d'une variable de type Tableau (array)
    declare -a TabVar=(`script1.sh`)
    > mail.dat    #-- initialisation du fichier mail.dat 
     
    if [[ ${#TabVar[*]} -eq 0 ]] ; then
        echo "*** Pas de fichier cree !!!" >> mail.dat
        MailObj="*** FATAL. Rapport `basename $0`"
    else
        for Fic in `echo ${TabVar[*]}` ; do
            echo "* repertoire : `dirname ${Fic}`, fichier : `basename ${Fic}`" >> mail.dat
        done
        MailObj="* Rapport `basename $0`"
    fi
     
    echo "$MailObj" 
    cat mail.dat
    exit
    mail -s "$MailObj" $2 < mail.dat
    Excuse moi blaireauone de ne pas pouvoir répondre si vite que ça.

    je suis toute occuppée dans d'autres choses.

    si on a un script shell de 500 lignes et on le lance à partir d'une application web. comment fais t-on pour récuperer tous les messages que va générer ce script.

    je m'explique :

    si je suis sur la ligne de commande et je lance ce script après le prompt, je peux récupérer sa sortie dans un fichier en faisant
    mais si je le lance à partir d'une autre application, je ne peux voir les messages qui seront affichés par le script.
    y a t-il moyen de mettre une commande dans ce script pour crérer un fichier qui contiendra ces messages ?

    Merci.

  6. #6
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Points : 1 001
    Points
    1 001
    Par défaut utiliser touch pour ca !
    Hello
    Tu pourrais faire un deuxiéme script qui crée un fichier vide (en bash c'est avec touch nom_fichier)et ensuite éxecute le script1 en le redirigeant , par exemple:
    script2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    touch blabla
    ./script1>blabla
    et puis par exemple script1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo"les sorties sont rédirigés vers blabla"
    echo"je sais pas quoi dire"
    echo"bon et bien voilà"
    Ca permet de récupérer dans un fichier quelconques tous les sorties de ton script.Donc quand on fera :
    on obtiendras :
    "les sorties sont redirigées vers blabla
    je ne sais pas quoi dire
    bon et bien voilà"
    aprés tu peut lire le fichier même dans script2.
    Bye
    Omnes Vulnerant Ultima Necat
    Bye

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 5
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par MarcG
    pour lire une sortie produite par un appelle a un script (1 ligne)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ligne=$(le script afficheur)
    traitement de $ligne
    Quid si la sortie comporte plusieurs lignes ? Est-on obligé de passer par un fichier de sortie dans ce cas ?

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    s'il y a plusieurs ligne il faut faire une boucle pour effectuer le traitement ligne par ligne genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    le_script_affichuer | while read ligne
    do
        traitement de $ligne
    done
    Marc
    Slackware for ever ......
    BASH - KSH ( http://marcg.developpez.com/ksh/ )

Discussions similaires

  1. Extraire toutes les données de toutes les tables
    Par fandreoli dans le forum PL/SQL
    Réponses: 1
    Dernier message: 06/08/2014, 18h13
  2. Update sur toutes les champs de toutes les tables
    Par cmasset dans le forum Requêtes
    Réponses: 2
    Dernier message: 19/12/2013, 19h04
  3. Lister toutes les lignes de toutes les tables
    Par méphistopheles dans le forum Langage SQL
    Réponses: 3
    Dernier message: 09/07/2010, 18h23
  4. egaliser toutes les cellules "" de toutes les feuilles
    Par tomy7 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/03/2008, 12h23
  5. parcourir toutes les colonnes de toutes les tables???
    Par cha_cha dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/01/2006, 12h31

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