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 :

Problème avec fabrication de timestamp


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 30
    Points : 45
    Points
    45
    Par défaut Problème avec fabrication de timestamp
    Bonjour, je ne suis pas très expert en script bash. Je voudrais définir un timestamp correspondant à une heure fixe du jour courant pour l'utiliser ensuite comme donnée dans des commandes telles que rtcwake - off -t timestamp pour que mon PC s'éteigne et se rallume à l'heure dite.

    Voici le petit script que j'essaye en vain de faire fonctionner mais quelque chose m'échappe dans le syntaxe des lignes 21, 23 et 26
    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
    #!/bin/bash
     
    currentD=$(date +%F)
    echo "date formatée est "${currentD}
    echo
    #prepare a target time-date 
    atDate=${currentD}" 10:28:00"
    echo "Voici la date cible " ${atDate}
    echo
    echo "voici un exemple de  conversion qui marche"
    date -d "2012-10-31 09:09:09" +%s
     
    echo
    echo "voici un exemple d'affectation à une variable de conversion avec date donnée en clair qui marche "
    bidul=`date -d "2012-10-31 09:09:09" +%s`
    echo "Conversion : "$bidul
    echo
     
    #exemple de conversion avec date calculée
    echo "voici un exemple de conversion avec date calculée"
    str="\""$atDate"\" +%s"
    # La string semble bonne
    echo "la string est : "$str
     
    echo "la string parait conforme à l'exemples ci-dessus et pourtant c'est là que ça cloche. Mais pourquoi ?"
    date -d $str
     
     
     
    #if [ "$curr" \< "08" ] ; then echo "inférieur à 8"
    #fi
     
    #if [ "$curr" \< "11" ] ; 
    #then 
    #echo "Je stoppe le PC"
    #sudo rtcwake -m off -t "$tmstp"
    #fi
    Voici le résultat

    jaaf@jaaf-P55A-UD4:/etc/cron.hourly$ ./lethal.sh
    date formatée est 2012-10-31

    Voici la date cible 2012-10-31 10:28:00

    voici un exemple de conversion qui marche
    1351670949

    voici un exemple d'affectation à une variable de conversion avec date donnée en clair qui marche
    Conversion : 1351670949

    voici un exemple de conversion avec date calculée
    la string est : "2012-10-31 10:28:00" +%s
    la string parait conforme à l'exemples ci-dessus et pourtant c'est là que ça cloche. Mais pourquoi ?
    date: opérande supplémentaire «+%s»
    Saisissez «*date --help*» pour plus d'informations.
    jaaf@jaaf-P55A-UD4:/etc/cron.hourly$
    Merci pour tout aide:

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 589
    Points : 19 474
    Points
    19 474
    Par défaut
    Bonjour,

    le shell ne respecte pas la syntaxe des guillemets, mais les lit l'un après l'autre, ce qui casse les commandes et expressions construites dans une variable.

    pour éviter cela, en bash, construis un tableau !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    array=( "$(date +%F) 10:28:00" )
    array+=( "+%s" )
    #array=( "$(date +%F) 10:28:00" "+%s" )
    date -d "${array[@]}"
    1351675680

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 30
    Points : 45
    Points
    45
    Par défaut
    Décidément bash présente encore beaucoup de mystères pour moi. En tout cas ça marche maintenant.

    Merci beaucoup.

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

Discussions similaires

  1. Problème réécriture d'url avec date en timestamp
    Par AurelienNF dans le forum Apache
    Réponses: 8
    Dernier message: 02/09/2010, 00h57
  2. [MySQL] problème avec TIMESTAMP
    Par niavlys26 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 20/08/2010, 20h02
  3. Problème avec TIMESTAMP
    Par Tchupacabra dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 20/06/2007, 11h41
  4. problème avec TIMESTAMP DEFAULT NULL
    Par Tchupacabra dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 06/06/2007, 16h18
  5. problème avec le type timestamp
    Par aline dans le forum Oracle
    Réponses: 6
    Dernier message: 21/02/2005, 10h05

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