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 :

Boucle timée en bash


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Par défaut Boucle timée en bash
    Bonjour,

    Je débute en bash et je cherche juste a faire un ptit truc tout con :

    Je veut repeter un code pendant 10 secondes.

    J'ai donc fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/bin/bash
     
    A=date+%s 
    A=$A+"10"
    while [ 1 ]; do
        echo "coucou"
        B=date+%s
        echo "$A et $B"
        sleep 1
        if [ "$A" -lt "$B" ]; then
            break 
        fi
    done
    exit 0

    Mais je ne cesse de me heurter a des problèmes de syntaxe, la dernière en dates est que visiblement A ou B n'est pas entier : test.sh: ligne 10 : [: : nombre entier attendu comme expression

    Voyez vous d'ou ça peux venir, ou mieux : si il existe une solution plus simple a mon besoin.

    Bonne journée

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Avant de se lancer dans des opérations complexes, mieux vaut s'en tenir au "B A BA"...

    Déjà, commencer par afficher chaque variable déclarée, ça permet de voir leur contenu et de ne pas s'arracher les cheveux avec des erreurs de syntaxe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ A=date+%s
     
    $ echo "${A}"
    date+%s
     
    $ A=$(date +%s)
     
    $ echo "${A}"
    1350472547
     
    $

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Par défaut
    Merci pour cette réponse rapide

    Je sais, je grille des étape mais je ne cherche pas vraiment a comprendre ou a apprendre le bash, j'ai juste besoin de ce micro bout de code pour un projet très différent.

    Ca fonctionne avec ton explication :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/bin/bash
     
    A=$(date +%s)
    A=$((A+10))
    while [ 1 ]; do
        echo "coucou"
        B=$(date +%s)
        echo "$A et $B"
        sleep 1
        if [ "$A" -lt "$B" ]; then
            break 
        fi
    done
    exit 0
    merci encore

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

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/bash
     
    t=$(date +%s)
     
    while test $t -ge $(date -d -10seconds +%s)
    do
       echo "a-t-on besoin de \$B ?"
       sleep 1
    done
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,
    Citation Envoyé par N_BaH Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while test $t -ge $(date -d -10seconds)
    Manque le "+%s" à la fin, non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while test $t -ge $(date -d -10seconds +%s)

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Citation Envoyé par zipe31
    Manque le "+%s" à la fin, non ?
    exact ! c'est corrigé.
    merci.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

Discussions similaires

  1. [SED+boucle] problème commande bash
    Par Amenos dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 14/05/2010, 14h44
  2. [bash]Modification de paramètres dans une boucle
    Par troumad dans le forum Shell et commandes GNU
    Réponses: 18
    Dernier message: 28/10/2007, 16h05
  3. [Bash] Boucle for recursive
    Par sliderman dans le forum Administration système
    Réponses: 7
    Dernier message: 05/09/2007, 14h13
  4. [BASH] Problème dans une boucle IF
    Par coincoin22 dans le forum Linux
    Réponses: 3
    Dernier message: 16/08/2007, 09h34
  5. [Bash]:Afficher une boucle dans un fichier ?
    Par byloute dans le forum Linux
    Réponses: 2
    Dernier message: 03/04/2007, 11h12

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