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 :

Fonction avec parametre entree et sortie


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club Avatar de Matmal11
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 111
    Points : 50
    Points
    50
    Par défaut Fonction avec parametre entree et sortie
    Bonjour,

    Je voudrais faire des calculs sur des dates dans un script bash shell.

    Pour le moment, je récupère les minutes, secondes et nanos dans des variables, je les traites ensuite par une fonction, mais c'est assez lourd en code (passage à + de 60s..etc).

    Je récupère mes valeurs ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TIME=`date +"%M:%S.%N"`
    MIN=`echo TIME | sed 's/:[0-9]*.[0-9]*$//"`
    SEC=`echo TIME | sed -e 's/^[0-9]*://' -e 's/.[0-9]*$//"`
    NANO=`echo TIME | sed 's/^[0-9]*:[0-9]*.//"`
    et je fais ensuite des opérations sur mes variables.

    Est-il possible d'effectuer des opérations sur les dates (additions, soustractions) dans le script shell sans passer par ce genre de fonction que je dois me créer???

  2. #2
    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 Matmal11
    Bonjour,
    Je voudrais faire des calculs sur des dates dans un script bash shell.

    Déja, tu peux remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    MIN=`echo TIME | sed 's/:[0-9]*.[0-9]*$//"`
    par :
    MIN=`date +%M`
     
    SEC=`echo TIME | sed -e 's/^[0-9]*://' -e 's/.[0-9]*$//"`
    par :
    SEC=`date +%S`
     
    NANO=`echo TIME | sed 's/^[0-9]*:[0-9]*.//"`
    par :
    NANO=`date +%N`
    Pour le reste, tu ne dis pas ce qui tu veux faire comme calcul, alors ...

  3. #3
    Membre habitué Avatar de baroudi
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 117
    Points : 139
    Points
    139
    Par défaut
    yes , bonne idée

  4. #4
    Membre du Club Avatar de Matmal11
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    Désolé de ne pas avoir le type de calcul, mais pour des opérations sur les dates, je pensais à la "soustraction" de 2 date pour savoir le temps écoulé entre 2 dates.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DATE_BEGIN=`date +"%H:%M:%S.%N"`
    DATE_END=`date +"%H:%M:%S.%N"`
    ECART=DATE_BEGIN-DATE_END
    Faire les opérations sur les nano, secondes, minutes et heures est assez lourd en code, donc si vous connaissez quelquechose deja existant ce serait cool.

    Merci

  5. #5
    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 Matmal11
    Désolé de ne pas avoir le type de calcul, mais pour des opérations sur les dates, je pensais à la "soustraction" de 2 date pour savoir le temps écoulé entre 2 dates.
    Si la précision à la seconde te convient, utilise date +%s

    http://man.developpez.com/man1/date.1.php

    %s secondes écoulées depuis `00:00:00 1970-01-01 UTC' (une extension GNU)

    DATE_BEGIN=`date +%s`; echo $DATE_BEGIN
    1182367452
    .../...
    DATE_END=`date +%s` ; echo $DATE_END
    1182367546

    ((ECART=DATE_END-DATE_BEGIN)) ; echo $ECART
    94

    ((MIN=ECART/60)) ; echo $MIN
    1

    ((SEC=ECART%60)) ; echo $SEC
    34

  6. #6
    Membre du Club Avatar de Matmal11
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    ok, ca va nikel.

    merci beaucoup

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

Discussions similaires

  1. [EasyPHP] Fonction avec parametre par référence et EasyPHP 1.8
    Par niaxon dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 01/02/2007, 10h59
  2. Fonction avec parametre variable
    Par Linaa dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/12/2006, 12h41
  3. appel d'une fonction avec parametre.
    Par rollernox dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/10/2006, 23h07
  4. créer une fonction avec parametre optionnel
    Par maximenet dans le forum Langage
    Réponses: 2
    Dernier message: 29/01/2006, 20h51
  5. fonction avec parametre
    Par donny dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/06/2005, 11h31

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