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 :

BASH: date avec argument variable


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    dev
    Inscrit en
    Octobre 2002
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Octobre 2002
    Messages : 53
    Par défaut BASH: date avec argument variable
    Bonjour,
    je cherche à écrire une fonction qui me donne les n derniers jours. Pour cela je constitue une variable cmd qui vaut:
    date --date '1 days ago' puis date --date '2 days ago'... etc.

    Lorsque je lance la fonction, cmd est correct (echo $cmd => cmd=date --date '2 days ago'), mais l'exécution de la commande cmd ( D=$($cmd) ) plante avec le message "date: trop d'arguments sont des options non reconnues: days ..."
    Je soupçonne un problème avec les cotes... Une idée ?
    Merci par avance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function save_Jn {
       NBJ=$1
       for i in $(seq $NBJ)
       do
          cmd="date --date '$i days ago'"
          echo "cmd=$cmd"
          D=$($cmd)
          echo "D=$D"
       done
    }

  2. #2
    Membre très actif

    Inscrit en
    Juillet 2008
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 186
    Par défaut
    Bonjour,

    Essaie avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
          cmd="$i days ago"
          echo "cmd=date --date $cmd"
          D=$(date --date "$cmd")
          echo "D=$D"
    Didier

  3. #3
    Membre confirmé
    Profil pro
    dev
    Inscrit en
    Octobre 2002
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Octobre 2002
    Messages : 53
    Par défaut [Résolu]
    Ça roule, merci beaucoup.

  4. #4
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Bon, voici deux réponses, mais je n'ai pas réussi à vraiment résoudre le problème du shell qui interprète les espaces

    1e solution, en bougeant le moins possible de choses.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function save_Jn
    {
       NBJ=$1
       for i in $(seq $NBJ)
       do
          cmd="date --date '$i days ago'"
          echo "cmd=$cmd"
          D=$(bash -c "$cmd")
          echo "D=$D"
       done
    }
    Je lance la commande dans un autre shell.

    2e solution, en utilisant une méthode légèrement différente
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function save_Jn2
    {
       sec=$(date +%s)
       for i in $1
       do
          echo "$(date -d @$(($sec - (86400 * i))))"
       done
    }
    Cette dernière me paraît plus simple. Question de goût sans doute.

Discussions similaires

  1. [XL-2010] Recherche VLOOKUP avec argument variable
    Par mike2222 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/05/2014, 08h37
  2. Réponses: 2
    Dernier message: 08/07/2013, 13h39
  3. [AC-2010] Générer une date avec une variable et les données de la date active
    Par zedcv dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 20/07/2012, 13h13
  4. [Dates] fonction date avec argument timestamp
    Par nicoda dans le forum Langage
    Réponses: 3
    Dernier message: 31/01/2008, 16h55
  5. Requête selection avec une variable de date
    Par kahmsin dans le forum Access
    Réponses: 7
    Dernier message: 20/11/2005, 19h38

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