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 :

problème script shell


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2011
    Messages : 60
    Par défaut problème script shell
    bonjour à tous
    je voudrais svp vous demander de m'aider à terminer mon script, je me connais nullement en programmation shell et j'ai besoin d'urgence d'un script pour résoudre un petit problème , donc j'ai voulu procéder ligne par ligne et l'essayer à chaque fois
    pour commencer je vais juste faire appel à deux codes, le 1er générant un fichier contenant n lignes entrées en paramètre avec un nombre aléatoire devant et le deuxième idem va générer deux fichiers , le problème c que je voulais mettre une boucle for dans le script pour me générer plusieurs instances de fichiers et sauvegarder chacune dans le répertoire courant mais ça à l'air de se planter , ça me donne juste le résultat d'un calcul intermédiaire alors que j'ai pas fait appel à echo puis se plante, crée un seul fichier de chaque mais vide !!
    voilà le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [mayoura@mayoura final]$ for i in `seq 500 505`; do gcc generateur_de_taches.c; ./a.out $i tache$i.txt; gcc generateur_de_machine.c; m= expr $i '*' 5 / 100; ./a.out $m  machine$i perf$i; done
    25
    ^C
    [mayoura@mayoura final]$ for i in `seq 1 40`; do gcc generateur_de_taches.c; ./a.out $i tache$i.txt; gcc generateur_de_machine.c; m= expr $i '*' 5 / 100>f$i ; ./a.out $m  machine$i perf$i; done
    expr: erreur de syntaxe
    ^C
    [mayoura@mayoura final]$ for i in `seq 1 40`; do gcc generateur_de_taches.c; ./a.out $i tache$i.txt; gcc generateur_de_machine.c; m= expr $i '*' 5 / 100 ; ./a.out $m  machine$i perf$i; done
    0
    merci d'avance
    j'attends votre aide impatiemment

  2. #2
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    1: inutile de générer plusieurs fois ton programme avec GCC
    2: l'option -o est vachement utile avec gcc elle te permet de donnée un nom a ton programme.

    Tu peux faire un truc du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    gcc -c  -WAll generateur_de_taches.c   -o generateur_tache
    gcc -c  -WAll generateur_de_machine.c -o generateur_machine
    for i in `seq 500 505`
    do
        ./generateur_tache  $i tache$i.txt
        ./generateur_machine $(( $i * 5 / 100 ))  machine$i perf$i
    done
    Note: fait sans compilateur/shell sous la main donc contiens potentiellement des erreurs.

    Une façon plus évolué est d'utiliser un makefile pour générer tes programmes uniquement si besoin.

    exemple (remplacer -> par des tabulation la syntaxe des makefile l'exige):
    Code Makefile.mk : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    all: generateur_tache generateur_machine
     
    generateur_tache: generateur_de_taches.c
    ->gcc -c  -WAll generateur_de_taches.c   -o generateur_tache
     
    generateur_machine: generateur_de_machine.c 
    ->gcc -c  -WAll generateur_de_machine.c -o generateur_machine

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    make -f Makefile.mk all
    for i in `seq 500 505`
    do
        ./generateur_tache  $i tache$i.txt
        ./generateur_machine $(( $i * 5 / 100 ))  machine$i perf$i
    done

  3. #3
    Membre confirmé
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2011
    Messages : 60
    Par défaut
    re bonjour
    je suis vraiment désolée j'ai eu un problème de connexion , ça vient juste de se rétablir
    j’essaie les solutions et je reviens , merci infiniment d'avoir répondu si rapidement
    je suis vraiment désolée mais ça passe pas
    comme je l'ai déjà mentionné je suis pas trop calée en shell ni en Linux d'ailleurs mais obligée de travailler avec
    et là j'ai pas vraiment compris comment procéder pour le makefile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [mayoura@mayoura final]$ all: generateur_tache generateur_machine
    bash: all:: commande inconnue...
    [mayoura@mayoura final]$  
    [mayoura@mayoura final]$  
    [mayoura@mayoura final]$ all: generateur_tache generateur_machine
    bash: all:: commande inconnue...
    [mayoura@mayoura final]$  
    [mayoura@mayoura final]$ generateur_tache: generateur_de_taches.c
    bash: generateur_tache:: commande inconnue...
    [mayoura@mayoura final]$ ->gcc -c  -WAll generateur_de_taches.c   -o generateur_tache
    bash: -: commande inconnue...

  4. #4
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    comme dit dans mon post précédent il faut remplacer '->' par des tabulation


    Un fichier makefile se lance avec la commande make, le tutoriel est ici:
    http://gl.developpez.com/tutoriel/outil/makefile/

  5. #5
    Membre confirmé
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2011
    Messages : 60
    Par défaut
    merci c'est bon :-)
    j'y suis arrivée
    c’était très gentil de ta part :-)
    bonne continuation

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

Discussions similaires

  1. script shell: problème avec le caractère espace
    Par Le fut dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 04/05/2017, 11h49
  2. Problème Script shell
    Par bombers dans le forum Shell et commandes GNU
    Réponses: 16
    Dernier message: 02/12/2014, 15h57
  3. Problème Script SHell
    Par foxrol dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 21/10/2011, 19h02
  4. problème script shell
    Par joelulrich dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 09/12/2010, 18h14
  5. problème script shell
    Par jeje69 dans le forum Shell et commandes GNU
    Réponses: 0
    Dernier message: 09/01/2008, 14h30

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