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 :

Structure de contrôle


Sujet :

Shell et commandes GNU

  1. #1
    Membre actif
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 51
    Par défaut Structure de contrôle
    Bonjour à tous!!! Je suis débutant sous Linux j'essaye de créer un script qui demande deux nombres à l'utilisateur et l'informe ensuite si leur produit est positif ou négatif sans tenir compte du cas où c'est nul. Mais je n'y arrive pas j'ai sans arrêt des erreurs.
    Pourriez vous m'aider

  2. #2
    Membre émérite Avatar de balkany
    Homme Profil pro
    Touriste
    Inscrit en
    Juillet 2017
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Touriste

    Informations forums :
    Inscription : Juillet 2017
    Messages : 348
    Par défaut
    Il faudrait que tu donnes ce que tu as commencé à coder, pour que l'aide apportée puisse partir de cette base et t'être profitable.

  3. #3
    Membre actif
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 51
    Par défaut
    Merci pour votre attention j'ai réussi à trouver le problème c'était dû aux crochets qui n'était pas espacé !
    Voici mon algorithme :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/base
     
    read -p "Entrez le 1er nombre :" Nbr1
    read -p "Entrez le 2e nombre :" Nbr2
     
    If [[ Nbr1 -gt 0 && Nbr2 -gt 0 ]] || [[ Nbr1 -lt 0 && Nbr2 -lt 0 ]]; then 
    Echo " le nombre est positif "
    Else 
    Echo " le nombre est négatif "
    Fi

  4. #4
    Membre actif
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 51
    Par défaut
    Mais j'aurai aimé faire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    read -p " entrez les deux nombres : " Nbr1, Nbr2
    Afin d'entrer directement les deux nombres et réduire mon code
    Mais quand j'écris ainsi ça me retourne une erreur

  5. #5
    Membre actif
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 51
    Par défaut Structure de contrôle
    J'ai effectué également un autre exercice qui consiste à créer un algorithme qui demande à l'utilisateur un nombre compris entre 10 et 20

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/bin/bash 
     
    read -p "Entrez un nombre compris entre 10 et 20" Nbr
     
    While  [[ "$Nbr" -ge de 10  && "$Nbr" -le 20 ]]; do
                If [[ "$Nbr" -ge 10 ]]; then
                    echo "le nombre est supérieur ou égale à 10" 
                 elif  [[ "$Nbr" -le 20 ]]
                    echo "le nombre est inférieur ou égale  à 20" 
                 else 
                    echo "entrez un nombre valide"
                fi 
    done

  6. #6
    Membre actif
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 51
    Par défaut
    Ce code me retourne l'erreur :
    "Syntax error near unexpected token 'else'

    Je ne comprends pas pourquoi

  7. #7
    Membre Expert
    Avatar de Escapetiger
    Homme Profil pro
    Administrateur système Unix - Linux
    Inscrit en
    Juillet 2012
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur système Unix - Linux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 1 581
    Par défaut
    @FrancisTita
    Prends le temps de lire les règles du club s'il te plaît (pour le code notamment):

    Démonstration de l'utilisation du bouton code (#)
    source: Le Club developpez.com - Les règles du Club - III-E. Les balises Code

    Par ailleurs, les copié/collé renvoient des majuscules en tête de ligne qui ne sont pas correctement interprétées en shell bash (voir Les meilleurs cours et tutoriels pour apprendre le système Linux - SHELL)
    « Developpez.com est un groupe international de bénévoles dont la motivation est l'entraide au sens large » (incl. forums developpez.net)
    Club des professionnels en informatique

    Liste des balises BB

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

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ read -p "Entrez les 2 nombres : " a b
    Entrez les 2 nombres : 6 5
    $ echo $a
    6
    $ echo $b
    5

  9. #9
    Membre émérite Avatar de balkany
    Homme Profil pro
    Touriste
    Inscrit en
    Juillet 2017
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Touriste

    Informations forums :
    Inscription : Juillet 2017
    Messages : 348
    Par défaut
    Pour l'erreur de syntaxe en #5, il manque le mot-clef then après le elif (et je suppose que le « de » qui traine dans le while vient d'un problème de copié-collé).
    Mais la logique de ce code est à revoir : si Nbr n'est pas plus grand que 10, il sera forcément plus petit que 20, et tout nombre sera donc considéré comme valide par le if then else.
    Mais de toutes façons, le while a déjà filtré les nombres entre 10 et 20, et il boucle infiniment si jamais on rentre dedans.
    Tu aurais aussi pu, comme en #3, ne pas mettre de $ devant les noms de variables, lorsqu'il s'agit de nombres entiers dans des tests entre doubles crochets, ni de guillemets qui ne sont jamais nécessaires dans ce type de tests.

  10. #10
    Membre actif
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 51
    Par défaut
    Merci Mr balkany pour vos éclaircissements je vais réfléchir sur une autre approche en tenant compte de vos remarques 😓

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 713
    Par défaut
    il faut lire un tuto pour débutant.

  12. #12
    Membre actif
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 51
    Par défaut boucle itérative
    bonjour et bon dimanche à tous!!
    j'ai éssayé de revoir et de modifier mon code mais je me retrouve coincé dans une boucle infinie lorsque le nombre est correct

    Code Shell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #!/bin/bash 
     
    read -p "Entrez un nombre :" Nbr
     
    while (( Nbr >= 0 && Nbr <= 20 )); do
            if [[ Nbr -eq 0 ]]; then
            echo " ce nombre est un zero "
     
            elif [[ Nbr -gt 0 && Nbr -lt 10 ]]; then
            echo "c'est un nombre inclut dans l'intervalle de 1-9"
     
            elif [[ Nbr -ge 10 && Nbr -le 20 ]]; then
            echo "c'est un nombre inclut dans l'intervalle de 10-20"
     
            else
            echo "entrez un nombre entier" 
     
            fi
    done

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 713
    Par défaut
    pourquoi faire une boucle ?

  14. #14
    Membre actif
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 51
    Par défaut
    Je me suis dit que ça serai plus logique tant que le nombre est supérieur ou égale à 0 et inférieur à 20 faire ceci ...

    Mon approche n'est pas la bonne😦😨

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 713
    Par défaut
    pose un algorithme d'abord, on codera plus tard

  16. #16
    Membre actif
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 51
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
     
    Var A: entier
     Début 
    Ecrire "entrez un nombre compris entre 0 et 20:"
    Lire A 
    Tant que A >=0 && A  <= 20
    Lire A
    Si A=0 Alors
    Ecrire " ce nombre est zero"
    Sinon si A >0 && A  <= 9 Alors 
    Ecrire " ce nombre est compris entre 1-9"
    Sinon si A>=10 && A  <= 20 Alors 
    Ecrire " ce nombre est compris entre 10-20"
    Sinon 
    Ecrire "entre un nombre valide"
    Fin si
    Fin tant que 
    Fin

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 713
    Par défaut
    tu demandes un nombre en entrée, et tu vérifies que le nombre entré est dans l'intervalle.
    c'est tout ce qu'il y a à faire ?
    alors, la question reste posée : pourquoi une boucle ?

  18. #18
    Membre actif
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 51
    Par défaut
    Oui il teste juste le nombre entré
    À vrai dire après plusieurs réflexion je ne vois pas non plus l'utilité de la boucle mais c'est juste que c'était la première idée qui m'était venue en tête
    Je me disais que ça aurait été plus logique de faire "tant que... au lieu de juste faire des If

  19. #19
    Membre actif
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 51
    Par défaut
    Pourriez vous me proposer un algorithme qui cadre dans cette logique mais cette fois en incluant une boucle
    Ça pourrait peut être m'aider à mieux comprendre

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 713
    Par défaut
    "plus logique" est une expression incorrecte, parce qu'elle suggère qu'il existe UNE logique universelle.
    Or ce n'est pas le cas, il y a des situations données et des comportements plus ou moins adaptés pour atteindre l'étape suivante.
    c'est ce qu'il faut définir précisément pour coder correctement.

    tu peux introduire une boucle pour gérer une erreur de saisie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    TantQue nombre est inférieur à zéro OU nombre est supérieur à 20  #ou Jusqu'àCeQue nombre supEgal 0 ET nombre infEgal 20
    Faire
        Lire nombre
    finTantQue
     
    Si $nombre == zéro
    Alors
        Afficher "nombre vaut zéro"
    AutreSi ...
        Afficher ...
    finSi

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Lex/Yacc] Aide traduction des structures de contrôle
    Par pelo68 dans le forum Générateurs de compilateur
    Réponses: 2
    Dernier message: 07/12/2010, 11h26
  2. Créer des noms de WinForm dans une structure de contrôle ?
    Par Feroen dans le forum Windows Forms
    Réponses: 2
    Dernier message: 30/08/2007, 09h12
  3. Réponses: 7
    Dernier message: 12/03/2007, 10h06

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