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 665
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 665
    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
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  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, 13h24
  2. créer des fichier de sortie pdf en boucle
    Par papekiki dans le forum Langage
    Réponses: 3
    Dernier message: 24/08/2009, 13h43
  3. Réponses: 6
    Dernier message: 14/03/2008, 11h54

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