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 :

Comment créer (simplement) des fichiers en sortie 'comptes-rendus' avec version ?


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Liamm
    Femme Profil pro
    Enseignant
    Inscrit en
    Janvier 2019
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 164
    Par défaut Comment créer (simplement) des fichiers en sortie 'comptes-rendus' avec version ?
    Bonjour,

    J'ai un batch, comportant plusieurs shell bash, que je passe en traitement hebdomadaire.
    A chaque passage hebdomadaire, un fichier compte-rendu différent est créé.

    Il m'arrive alors, lorsque je voie des erreurs dans le compte-rendu, de corriger le ou les sources et de relancer le traitement.
    Actuellement, le nouveau passage créé un fichier compte-rendu qui écrase le précédent (de la même semaine) .
    D'où l'idée de créer des versions différentes pour chaque passage;
    Quelque chose de simple du genre incrémenter un compteur placé à la fin du nom du fichier créé.

    Voici le source actuel :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    #!/bin/bash
     
    ARG1=${1:?"Ce script nécessite a 1 arguments: \
    	   1) arg1=99 (n° de semaine à éditer de l'année 2021" }
     
    #####   Script : p0s.sh                                            #####
    # Autheur :              Liam                                          #
    # Date de creation :     01 Juin 2021                                  #
    # Date de modification : 13 Juin 2021 => Mod1                          #
    #                                                                      #
    ########################################################################
    # Traitement batch d'une des semaines de l'année 2021                  #
    ########################################################################
     
    declare -i numf3=$1-1
     
    #    echo "argu1 = $1"                                                  #TEST
    #    echo "numf3 = $numf3"                                              #TEST
     
    fn1="f21peas"$1".csv"
    fn2="fc"$1".csv"
    fn3="fc"$numf3".csv"
    fn4="f21s"$1".csv"
    fn5="f21s"$1".log"                                                      #Mod1
     
    # Contrôle de l'execution sur l'écran :                            #TEST
    echo "fn1 = $fn1"                                                  #TEST
    echo "fn2 = $fn2"                                                  #TEST
    echo "fn3 = $fn3"                                                  #TEST
    echo "fn4 = $fn4"                                                  #TEST
    echo "fn5 = $fn5"                                                  #TEST#Mod1
     
    if [[ ! -f "$fn1" ]]; then
        echo "${fn1} manque" >> fn5                                         #Mod1
    else
        ./p1.sh     "$fn1" "$fn2"   >  "$fn4"
        ./p2.sh            "$fn2"   >> "$fn4"                  
        ./p3.sh            "$fn2"   >> "$fn4"           
        ./p4.sh            "$fn2"   >> "$fn4"
        ./p5.sh                     >> "$fn4"
        ./p6.sh                     >> "$fn4"
        ./p7.sh     "$fn3" "$fn2"   >> "$fn4"
        ./p8.sh                     >> "$fn4"
        ./p9.sh                     >> "$fn4"
     
        cat "$fn4"
    fi

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

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

    mv a une option --backup pour laquelle on peut définir un paramètre parmi none, numbered, existing, ou simple.
    cf. man mv

  3. #3
    Membre confirmé Avatar de Liamm
    Femme Profil pro
    Enseignant
    Inscrit en
    Janvier 2019
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 164
    Par défaut
    Merci N_BaH
    Je vais regarder par mv

  4. #4
    Membre confirmé Avatar de Liamm
    Femme Profil pro
    Enseignant
    Inscrit en
    Janvier 2019
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 164
    Par défaut
    Pour répondre à la question initiale, je pense ajouter le code en gras en fin de programme :

    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
    if [[ ! -f "$fn1" ]]; then
        echo "${fn1} manque" >> fn5                                         #Mod1
    else
        ./p1.sh     "$fn1" "$fn2"   >  "$fn4"
        ./p2.sh            "$fn2"   >> "$fn4"                  
        ./p3.sh            "$fn2"   >> "$fn4"           
        ./p4.sh            "$fn2"   >> "$fn4"
        ./p5.sh                     >> "$fn4"
        ./p6.sh                     >> "$fn4"
        ./p7.sh     "$fn3" "$fn2"   >> "$fn4"
        ./p8.sh                     >> "$fn4"
        ./p9.sh                     >> "$fn4"
        
        cat "$fn4"
    fi
    
    cp --backup='t' -T "$fn4" "$fn4"
    J'ai changé la commande mv en cp
    J'attends de tester (en réel) en fin de cette semaine.

  5. #5
    Membre confirmé Avatar de Liamm
    Femme Profil pro
    Enseignant
    Inscrit en
    Janvier 2019
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 164
    Par défaut
    J'ai testé dans le script, la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cp --backup='t' -T "$fn4" "$fn4"
    ça ne marche pas !

    mais, ça marche avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cp --backup='t' -T "$fn4" "$fn6"
    avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fn4="f21s"$1".csv"
    fn6="f21s"$1"_save.csv"

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

Discussions similaires

  1. Créer des fichiers à la sortie en fonction d'un champ
    Par nice-one dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 26/04/2013, 14h24
  2. créer des fichier de sortie pdf en boucle
    Par papekiki dans le forum Langage
    Réponses: 3
    Dernier message: 24/08/2009, 14h43
  3. Réponses: 6
    Dernier message: 14/03/2008, 12h54

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