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 :

sep/for nombre virgule


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut sep/for nombre virgule
    Bonjour tous,

    j'aimerais utiliser la commande "seq" pour faire un vecteur du type "5 4.8 4.6 4.4 4.2 4.0" et ensuite faire un boucle sur ces nombre.

    La commande suivante me semblait logique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    initial=5
    step=-0.2
    final=4
     
    zzz=seq $initial $step $final
     
    for i in $zzz; do
    echo i
    done
    mais j'ai comme erreur "5: commande introuvable", je ne comprends pas pourquoi ce bout de code ne fonctionne pas, ça me semblait logique...

    pourriez vous me dire comment faire un vecteur de flottant et comment ensuite l'attribuer à une variable est l'utiliser dans un boucle.

    merci beaucoup!!!!!!!!!!

    ps: je sais que l'on peut faire plus condensé comme écriture mais ça ne m'intéresse pas car dans la réalité la variable zzz (le vecteur donc)

    je l'utilise pour d'autre choses ensuite et pas seulement pour la boucle.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 666
    Par défaut
    wahou

    voir Substitution de commandes
    dans le man aussi.

    tu liras avec profit les pages auxquelles mènent les liens dans ma signature.

    PS : si tu veux obtenir un point comme séparateur décimal, il faut définir LC_NUMERIC sur C, "localement", pour seq :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LC_NUMERIC=C seq $deb $interV $fin
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour,

    pas besoin de calculer. Il suffit d'appliquer la règle apprise en école primaire:
    diviser par 10, c'est bouger la virgule d'un rang vers la gauche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ for ((i=50;i>39;i=i-2)); do echo -n "$i ";done |sed 's/\([0-9]\)\([0-9]\) /\1.\2 /g'
    5.0 4.8 4.6 4.4 4.2 4.0

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 364
    Par défaut
    Bonjour,

    Pour le fun (sous bash):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ echo {4..5}.{0..8..2}
    4.0 4.2 4.4 4.6 4.8 5.0 5.2 5.4 5.6 5.8

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    super, merci.
    par contre je t'avous ne pas avoir compris la commande LC-NUMERiC=C seq ...etc
    que va me renvoyer cette commande ?

    je crois que je vais tenter une autre solution que je comprends:
    - j'ecris dans un fichier avec des virgules
    -je fais un sed pour avoir des points
    -j'importe le contenu du fichier dans une variable

    EDIT: j'ai vu les autres message qu'après, merci aussi. Je vais regarder toutes les solutions et faire la plus simple

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 22/05/2021, 15h33
  2. Ecriture de nombres à virgule dans un fichier
    Par Berliozz dans le forum VBScript
    Réponses: 2
    Dernier message: 02/09/2006, 15h36
  3. additionner des nombres à virgules
    Par Phiss dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/03/2006, 10h35
  4. problème avec les nombres à virgule
    Par shingo dans le forum Langage
    Réponses: 3
    Dernier message: 16/01/2006, 18h30
  5. [Console] Comment afficher de gros nombres à virgule ?
    Par Évariste Galois dans le forum C++
    Réponses: 9
    Dernier message: 11/07/2005, 09h49

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