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 for pour créer 10 fichiers txt contenant respectivement le message bonjour 1 fois à boujour 10 fois


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2020
    Messages : 39
    Par défaut Boucle for pour créer 10 fichiers txt contenant respectivement le message bonjour 1 fois à boujour 10 fois
    Bonjour à tous,

    je débute sous Linux.

    je veux créer 10 fichiers txt et que chacun contienne un message par exemple boujour 1 fois pour le fichier01.txt et bonjour 10 fois pour le fichier10.txt

    je souhaite utiliser une boucle for

    pour créer les fichiers j'ai fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    touch exemple{01..10}.txt
    Mais pour le message je bloque... J'ai essayé ceci mais ça ne marche pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FOR /L %i IN (1,1,10) DO @ECHO Message %i
    Merci d'avance pour votre aide précieuse.
    F.

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

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

    si, si, ça marche
    sous MS-DOS.


    pour écrire du shell sur Linux, tu dois lire quelques tutoriels.
    regarde ma signature.

    PS: touch est inutile.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 357
    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 357
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    PS: touch est inutile.
    Oui et non, tout dépend du contexte d'utilisation

    Sinon, le vrai challenge serait de répondre à la question avec une boucle implicite , donc sans for,while...

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    je ne suis pas certain d'avoir compris.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    S_implicite() { FUNCNEST=10; n=${1:-0}; echo "bla bla $((++n))" >/tmp/fic_$n.txt; $FUNCNAME $n;}
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 357
    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 357
    Par défaut
    J'aime bien, et ça montre des choses pas trop courante de bash
    Par contre la prochaine fois je préciserais aussi sans créer une fonction récursive

    Pour le touch, on a toujours tendance à dire que ce n'est pas utile, et c'est vrai bien souvent, mais faudrait dire pourquoi et forcer un peu le trait comme pour ls:
    -touch ne doit être utilisé que pour ce qu'il a été fait: changer les timestamps d'un fichier.
    -Si on veut avoir un NOUVEAU fichier, la simple redirection sur le fichier (>fichier) est suffisant.
    -Si on veut créer un fichier si celui-ci n'existe pas, on utilise la double redirection sur le fichier, (>>fichier) et ici, si le fichier existe déjà, alors il n'est pas touché même les timestamps ne change pas en force.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ eval $(printf 'echo "bla bla %d" >/tmp/fic_%d.txt;' $(printf '%d\n' {1..10} {1..10} | sort -n))
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FOR /L %i IN (1,1,10) DO @ECHO Message %i
    Cette ligne de commande n'est pas du shell Linux mais Windows (voire MS-DOS).

    L'opérateur for de la commande bash est décrit ce paragraphe de la documentation
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2020
    Messages : 39
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Cette ligne de commande n'est pas du shell Linux mais Windows (voire MS-DOS).

    L'opérateur for de la commande bash est décrit ce paragraphe de la documentation

    J'ai parcouru le paragraphe je n'ai pas compris

  9. #9
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    L'équivalent de l'opérateur FOR que tu souhaitais utiliser est décrit là :
    for (( expr1 ; expr2 ; expr3 )) ; do liste ; done
    L'expression arithmétique expr1 est d'abord évaluée selon les règles décrites ci-dessous sous ÉVALUATION ARITHMÉTIQUE. L'expression arithmétique expr2 est ensuite évaluée répétitivement jusqu'à valoir zéro. Chaque fois que expr2 est évaluée en une valeur différente de zéro, liste est exécutée et l'expression arithmétique expr3 est évaluée. Si l'une des expressions est omise, elle est considérée comme s'évaluant à 1. La valeur renvoyée est l'état final de la dernière commande dans liste qui est exécutée ou faux si l'une des expressions est incorrecte.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

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

Discussions similaires

  1. [Python 3.X] boucle for pour créer objet dans class
    Par flapili dans le forum Général Python
    Réponses: 10
    Dernier message: 26/05/2017, 20h09
  2. [Batch] Deux boucles FOR pour comparer deux fichiers ligne par ligne et une condition IF
    Par Christophe.G dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 18/11/2014, 23h10
  3. [Batch] Boucle For pour parser des fichiers + exclusion
    Par L'assembleur dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 04/07/2011, 15h41
  4. Réponses: 1
    Dernier message: 18/02/2008, 19h21
  5. Réponses: 7
    Dernier message: 10/10/2007, 19h23

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