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 :

Script qui multiplie automatiquement par deux le résultat final


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 97
    Par défaut Script qui multiplie automatiquement par deux le résultat final
    bonjour,

    j'ai (avec la participation de quelques uns d'entre vous) créé le script ci-dessous qui doit me remonter l'écart de jours entre deux dates données, par contre la finalité serait que ce résultat soit multiplié par deux, mais comment faire ?

    Merci de votre aide .

    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
    #!/bin/bash
     
    dateDiff(){
        d1=$(date -d "$1" +%s)
        d2=$(date -d "$2" +%s)
        result=$(date -d "1970-01-01 UTC $((d1-d2-86400)) seconds" +"%j")
        echo ${result}
    }
     
    if [ $# -ge 2 ]; then # Si deux paramètres passés au script
        d1=$1
        d2=$2
    else
        echo "Saisir les dates d1 et d2 :"
        read d1
        read d2
    fi
     
    dateDiff $d1 $d2

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

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

    bah
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $(($(datediff $d1 $d2) * 2))
    !
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 97
    Par défaut Script qui multiplie automatiquement par deux le résultat final
    J'ai essayé mais cela ne fonctionne pas. (ci-dessous le script modifié)

    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
    #!/bin/bash
     
    dateDiff(){
        d1=$(date -d "$1" +%s)
        d2=$(date -d "$2" +%s)
        result=$(date -d "1970-01-01 UTC $((d1-d2-86400)) seconds" +"%j")
        echo $(($(datediff $d1 $d2) * 2))
    }
     
    if [ $# -ge 2 ]; then # Si deux paramètres passés au script
        d1=$1
        d2=$2
    else
        echo "Saisir les dates d1 (date + récente) et d2 (date + ancienne) au format aaaammjj :"
        read d1
        read d2
    fi
     
    dateDiff $d1 $d2

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    mais non !
    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
    #!/bin/bash
     
    dateDiff(){
        d1=$(date -d "$1" +%s)
        d2=$(date -d "$2" +%s)
    # ça c'est le résultat que doit afficher la fonction
        echo $(date -d "1970-01-01 UTC $((d1-d2-86400)) seconds" +"%j")
    }
     
    # Si _moins de deux_ paramètres sont passés au script
    if [ $# -lt 2 ]
    then
        echo "Saisir les dates d1 (date + récente) et d2 (date + ancienne) au format aaaammjj :"
        read d1
        read d2
    # il faudrait peut-être vérifier le format des données entrées par l'utilisateur
    fi
     
    #
    echo $(($(dateDiff $1 $2) *2))
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 97
    Par défaut Script qui multiplie automatiquement par deux le résultat final
    Le format est le suivant ==> aaaammjj, mais j'ai tout le temps le même écart entre les jours recherchés, c'est à dire 730.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/bash
     
    if [ $# -lt 2 ]
    then
       echo "Saisir les dates d1 (date + récente) et d2 (date + ancienne) au format aaaammjj :"
       read d1
       read d2
       set -- $d1 $d2 
    fi
    echo $(( ( $(date -d "$1" +%s) - $(date -d "$2" +%s) ) / 86400 *2))
    Le format est le suivant ==> aaaammjj
    si je rentre "tarte à la crème", penses-tu que le format des données sera encore 'aaaammjj' ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 97
    Par défaut script qui multiplie par deux mon resultat final
    Bonjour,

    j'ai crée un script avec l'aide de certains d'entre vous (merci à eux d'ailleurs une fois de plus) qui compte le nombre de jours entre deux dates (script ci-dessous)

    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
    #!/bin/bash
     
    dateDiff(){
        d1=$(date -d "$1" +%s)
        d2=$(date -d "$2" +%s)
        result=$(date -d "1970-01-01 UTC $((d1-d2-86400)) seconds" +"%j")
        echo ${result}
    }
     
    if [ $# -ge 2 ]; then # Si deux paramètres passés au script
        d1=$1
        d2=$2
    else
        echo "Saisir les dates d1 et d2 :"
        read d1
        read d2
    fi
     
    dateDiff $d1 $d2

    Ma question est la suivant, j'aimerai savoir comment faire pour multiplier le resultat par deux car j'ai deux fichiers par jour?

    Merci de votre aide par avance...

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    Bonjour.
    Tu avais déjà posé la question naguère et N_BaH avait déjà donné la réponse:
    http://www.developpez.net/forums/d12...l/#post6949321

    L'aurais-tu oublié?

  9. #9
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 97
    Par défaut script qui multiplie par deux mon resultat final
    Jack, le problème c'est que pour les même dates le script de N_BAH me remonte 7 (écart entre 20121007 et 20121001) et que moi et je te le répète en rentrant les mêmes dates et avec le même script il me remonte 6 .

    tu sais d’où vient le problème, ce n'est pas le paramètre 86400 qui pose problème??

    Merci de ton aide ci-dessous le script

    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
    #!/bin/bash
     
    dateDiff(){
        d1=$(date -d "$1" +%s)
        d2=$(date -d "$2" +%s)
        result=$(date -d "1970-01-01 UTC $((d1-d2-86400)) seconds" +"%j")
        echo ${result}
    }
     
    if [ $# -ge 2 ]; then # Si deux paramètres passés au script
        d1=$1
        d2=$2
    else
        echo "Saisir les dates d1 et d2 :"
        read d1
        read d2
    fi
     
    dateDiff $d1 $d2

  10. #10
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    Bonjour.

    J'avoue que j'ai un peu de mal à suivre!

    Dans ton premier post de ce thread, tu demandes, à la fin:

    Citation Envoyé par bomonde Voir le message
    j'aimerai savoir comment faire pour multiplier le resultat par deux car j'ai deux fichiers par jour?
    Le lien que j'ai posté envoie précisément vers la réponse de N_BaH à cette question:
    Citation Envoyé par N_BaH Voir le message
    bah
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $(($(datediff $d1 $d2) * 2))
    !
    Puis tu me réponds:

    Citation Envoyé par bomonde Voir le message
    Jack, le pb c'est que pour les meme dates le script de N_BAH me remonte 7 (ecart entre 20121007 et 20121001) et que moi et je te le repete en rentrant les memes dates et avec le meme script il me remonte 6 .

    tu sais d'ou vient le pb, ce n'es tpas le parametre 86400 qui pose pb??
    Je n'étais pas du tout sur cette longueur d'onde ?!?!

    Y a-t-il un problème avec ton script ou celui de N_BaH?

    Àmha, il y a plutôt un problème de spécifications!
    (je vais finir par compter le nombre de fois où ça arrive sur ce forum!!!)

    Question: lorsque tu fournis comme dates le 1/01/2012 et le 2/01/2012, pour toi, combien doit-il y avoir de jours de différence?

    1 ou 2 ?

    Après, on discute sérieusement

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    je fais bêtement ce qu'on me demande, sans relire tout le script, et Bomonde ne fait pas beaucoup d'effort pour ap/comprendre l'écriture de script shell ! àmha.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/bin/bash
     
    if [ $# -ge 2 ]; then # Si deux paramètres passés au script
        d1=$1
        d2=$2
    else
        echo "Saisir les dates d1 et d2 :"
        read d1
        read d2
    fi
     
    echo $(( ($(date -d "$d1" +%s)-$(date -d "$d2" +%s)) /86400 ))
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. Script qui sert à envoyer par email le mot de passe oublié d'un membre
    Par AirBen23 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 14/09/2012, 16h43
  2. Quel langage pour un script qui connecte automatiquement sur un site ?
    Par dephesity dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 13/08/2007, 11h11
  3. Réponses: 15
    Dernier message: 24/05/2007, 12h02
  4. Réponses: 8
    Dernier message: 16/03/2007, 16h43
  5. Script qui s'exécute deux fois ?
    Par ben53 dans le forum Langage
    Réponses: 1
    Dernier message: 29/01/2007, 15h56

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