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 :

Faire un script simple


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 274
    Points : 56
    Points
    56
    Par défaut Faire un script simple
    bonjour

    je me met au script et j'ai des petits problemes de programmation
    je veux que mon programme me donne via echo le nombre de parametre et quel parametre j'ai mis, mais j'ai un probleme


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #!/bin/bash
     
    var = 0
    for i in $*;do
    var = var + $i //je met tous les parametres dans la variable var
    done
     
    echo "la liste des parametre est : $var"
    echo "le nombre de parametre est : $#"
    exit 0
    mon probleme vient de la ligne var = var + $i ca ne marche pas lors de l'éxécution

    merci de votre aide

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Bonjour,

    1- les affectations se font sans espaces autour du =.
    2- la boucle ne sert à rien : il existe deux variables qui contiennent les arguments passés à un script (cf. man bash /Paramètres spéciaux)
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 274
    Points : 56
    Points
    56
    Par défaut
    ok,
    en faite j'aimerais pouvoir ecrire
    ce qui me permettrait d'afficher sur une ligne seulement, tous mes parametres d'ou le besoin de mettre une boucle. or si je met :
    ca m'affiche:
    les parametres sont : 0+parametre1+parametre2


    comment me débarasser du 0 et des + ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    « le monsieur te dit » que ta variable ne sert à rien, puisqu'il existe déjà des variables qui contiennent les paramètres passés au script* ! RTFM!

    EDIT:
    * dont une qui sert dans ta boucle.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 25
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par cosmoff Voir le message
    bonjour

    je me met au script et j'ai des petits problemes de programmation
    je veux que mon programme me donne via echo le nombre de parametre et quel parametre j'ai mis, mais j'ai un probleme


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #!/bin/bash
     
    var = 0
    for i in $*;do
    var = var + $i //je met tous les parametres dans la variable var
    done
     
    echo "la liste des parametre est : $var"
    echo "le nombre de parametre est : $#"
    exit 0
    mon probleme vient de la ligne var = var + $i ca ne marche pas lors de l'éxécution

    merci de votre aide
    Voici malgré tout une correction de ton script avec une boucle sur les paramètres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/bash
     
    var=""
    for i in `seq 1 $#`; do
      eval "var=\"\$var \${$i}\""
    done
     
    echo "la liste des parametre est : $var"
    echo "le nombre de parametre est : $#"
    exit 0
    Pour t'aider a comprendre les erreurs dans ton précédent script.

    Cependant, comme le dis N_BaH, il y a une façon beaucoup plus simple et plus propre de le faire.
    Cherche bien dans le man.

    Les commentaires en bash ne sont pas précédés de // mais de #.

  6. #6
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Bonjour

    Vaut mieux ne rien dire que de donner de si mauvais conseils.

    Utiliser eval est idiot et dangereux. Idiot car inutile et dangereux car, à force de faire évaluer des chaînes de caractères, tu vas évaluer quelque-chose qui pourra contenir un code malicieux.

    comment me débarasser du 0 et des + ?
    Si tu ne veux pas les avoir, il ne faut pas les demander ...
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  7. #7
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 25
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Bonjour

    Vaut mieux ne rien dire que de donner de si mauvais conseils.

    Utiliser eval est idiot et dangereux. Idiot car inutile et dangereux car, à force de faire évaluer des chaînes de caractères, tu vas évaluer quelque-chose qui pourra contenir un code malicieux.


    Si tu ne veux pas les avoir, il ne faut pas les demander ...
    Je n'ai pas conseillé ce code, bien au contraire.
    Il existe des solutions bien meilleurs.

    Rien est idiot, le but est de comprendre comment les choses fonctionnent.

  8. #8
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Citation Envoyé par jzyra
    Je n'ai pas conseillé ce code, bien au contraire.
    Pour ton amnésie:
    Citation Envoyé par jzyra
    eval "var=\"\$var \${$i}\""
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  9. #9
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 25
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Pour ton amnésie:
    J'ai mis un code qui fonctionne dans le but de l'aider a comprendre.
    Je ne lui ai pas dis de l'utiliser.
    Tu n'as pas dus bien lire mon poste.

    J'ai bien précisé qu'il y avait une autre solution bien meilleur.
    Je l'ai d'ailleurs inciter a la rechercher.

  10. #10
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/bash
     
    echo "la liste des parametres est : $@"
    echo "le nombre de parametres est : $#"
    echo "liste des parametres :"
     
    for param in "$@"; do
            echo " - $param"
    done
    et son exécution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ ./pouet salut "tout" "le monde"
    la liste des parametres est : salut tout le monde
    le nombre de parametres est : 3
    liste des parametres :
     - salut
     - tout
     - le monde

Discussions similaires

  1. Script simple en csh
    Par FinalSpirit dans le forum Linux
    Réponses: 10
    Dernier message: 02/01/2006, 22h37
  2. Faire un script qui me créer un script
    Par tripper.dim dans le forum Oracle
    Réponses: 8
    Dernier message: 30/11/2005, 11h11
  3. Besoin d'aide pour faire un script
    Par shinux2004 dans le forum Langage
    Réponses: 4
    Dernier message: 16/07/2005, 16h44
  4. quel langage choisir pour faire de script sous windows
    Par pas05 dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 18/11/2002, 22h42

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