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] syntaxe "for x in {a..b}" utilisable uniquement avec des entiers constants ?


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
    Inscrit en
    Juillet 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 172
    Par défaut [bash] syntaxe "for x in {a..b}" utilisable uniquement avec des entiers constants ?
    Bonjour.

    Je veux boucler sur une suite de valeurs consécutives et cette syntaxe me semble être la plus appropriée.
    Je connais aussi la syntaxe for((e1;e2;e3)), mais elle est plus verbeuse et trop "overkilled" pour ce besoin.

    Mais sauf erreur de ma part, seuls les nombres entiers constants semblent être acceptés avec cette syntaxe.

    J'ai essayé ceci :

    for x in {2..`$numFiles`} et for x in {2..$($numFiles)}

    Ai je fait une erreur ou seuls les entiers constants sont autorisés ?

    Si seuls les entiers constants sont autorisés je sais utiliser Seq, mais c'est un peu plus verbeux.

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

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

    La substitution de commande ne sert à rien ici.

    Effectivement, une expression de série (Développement des accolades) ne peut comporter que des entiers constants, parce que "Le développement des accolades est effectué avant tout autre développement[...]"
    cependant, il est possible d'utiliser des variables grâce à eval, mais bon
    dans ce cas là, en BASH, le mieux reste for ((e1;e2;e3))
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 172
    Par défaut
    Ok, merci.

    Par curiosité c'est quoi au juste la syntaxe d'eval, j'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
          for x in {2..eval "$numFiles"}
             do echo $numFiles
          done
    Mais alors que numFiles a pour valeur "7", "7" ne s'affiche que 2 fois sur la sortie standard au lieu de 6 fois.

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

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

    Ce que j'en sais est beaucoup plus moche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for item in $(eval echo {$debut..$fin}); do...;done
    il est donc mieux, en BASH, d'en rester à ce qui a été préconisé, et pour un shell POSIX, d'utiliser une boucle while et une incrémentation à l'intérieur.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 172
    Par défaut
    Ok, merci.

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

Discussions similaires

  1. syntaxe du for
    Par sissi25 dans le forum Langage
    Réponses: 4
    Dernier message: 10/01/2007, 21h51
  2. Syntaxe boucle for
    Par fmoriet dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 22/12/2006, 07h39
  3. [VBS][Débutant] Problème syntaxe boucle For
    Par _alex_ dans le forum VBScript
    Réponses: 2
    Dernier message: 26/07/2006, 14h26
  4. [Syntaxe] Boucle For imbriquées en 1.5
    Par Piolet dans le forum Langage
    Réponses: 5
    Dernier message: 09/01/2005, 00h49

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