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 :

Exercice en bourne shell


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 90
    Par défaut Exercice en bourne shell
    Bonjour à tous,
    ici sera peut être un meilleur endroit pour demander conseil à propos de script shell que sur le forum C++
    En deux lignes: je suit une formation de programmeur et je dois rendre un devoir: des programmes écrient en bourne shell.
    Jeune padawan que je suis, recherche Jedi pour me donner quelques pistes pour un apprentissage efficace, et me donner un coup de main pour mon devoir.
    Suis-je au bon endroit ?
    J'ai plusieur programme à rendre:
    Le premier: ecrire un prog qui classe deux arguments. genre:
    $classe 59 26
    26 est inférieur à 59
    øclasse 26
    il manque un argument
    $classe
    veuillez saisir deux argument à comparer.

    Code bash : 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
    20
    #programme en bourne shell qui compare deux nombres
    #!/bin/shell
     
     
    echo Veuillez saisir les deux nombres à comparer 
    echo Saisi de a le premier nombre
    read arg1
    a=$arg1
    echo Saisi de b le premier nombre
    read arg2
    b=$arg2
     
     
     
    if [ "$arg1" -lt "$arg2" ]
    then 
    echo $arg1 est inferieur a $arg2
    else 
    echo $arg2 est inferieur a $arg1
    fi
    alors voilà la première ébauche de ce programme, sauf que là, j'aiemrai que les arguments soit demandés au même moment que l'on lance le prog, et pas que le prog demande les nombres a puis le nombre b.

  2. #2
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonjour.

    Je ne suis pas spécialiste Unix (plutôt orienté Linux) mais t'es sûr que c'est /bin/shell et pas /bin/sh ?

    Que renvoie (en root) :

    Sous quel OS est-tu exactement ? As-tu testé ce script ? Si oui fonctionne t-il ?

    Sinon, ça devrait ressembler à ça :

    Code bash : 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
    20
    21
    22
    23
    #!/bin/sh
     
    # Si le nombre d'argument passé à la ligne de commande est < 2
    if [ $# -lt 2 ]
    then 
        echo "Veuillez saisir le premier nombre a comparer : "
        read arg1
        echo "Veuillez saisir le second nombre a comparer : "
        read arg2
    else
        arg1=$1 # premier arg de la ligne de commande
        arg2=$2 # second
    fi
     
    # les variables a et b ne servent à rien visiblement
     
    # -lt n'est pas un opérateur de chaîne
    if [ $arg1 -lt $arg2 ]
    then 
        echo "$arg1 est inferieur a $arg2"
    else 
        echo "$arg2 est inferieur a $arg1"
    fi

    A tester/adapter/corriger

    Cordialement,
    Idriss

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 90
    Par défaut
    En effet /bin/shell ne correspond à rien. Autant pour moi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ sudo ls -l /bin/shell
    [sudo] password for user: 
    ls: impossible d'accéder à /bin/shell: Aucun fichier ou dossier de ce type
    J'ai testé ce script qui fonctionne très bien.

    Je souhaiterai encore l'adapter. En fait je voudrai que les arguments soient saisis au même moment où on lance le programme. du style

    $question1.sh 26 13
    13 est inférieur à 26

    Et là je serai au top pour cet exo. Sinon c'est top.

    MERCI

    Sinon je travail sous Kubuntu 11.10. Un bon petit pinguin

  4. #4
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Re-bonjour.

    Sinon je travail sous Kubuntu 11.10. Un bon petit pinguin
    Très bien dans ce cas, j'ai replacé cette discussion dans le bon forum . Du coup, tu peux utiliser bash (c'est comme sh mais en plus évolué) qui est le plus utilisé sous Linux ...

    Surtout que sh sous Kubuntu je crois que c'est un faux (un lien symbolique vers dash, encore un autre shell ressemblant propre aux Debian like).

    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
    20
    21
    22
    23
    #!/bin/bash
     
    # Si le nombre d'argument passé à la ligne de commande est < 2
    if [ $# -lt 2 ]
    then 
        echo "Veuillez saisir le premier nombre a comparer : "
        read arg1
        echo "Veuillez saisir le second nombre a comparer : "
        read arg2
    else
        arg1=$1 # premier arg de la ligne de commande
        arg2=$2 # second
    fi
     
    # les variables a et b ne servent à rien visiblement
     
    # -lt n'est pas un opérateur de chaîne
    if [ $arg1 -lt $arg2 ]
    then 
        echo "$arg1 est inferieur a $arg2"
    else 
        echo "$arg2 est inferieur a $arg1"
    fi
    Là tu peux l'utiliser comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    chmod +x mon_script.sh
    ./mon_script.sh 23 18
    Bref, à tester et vérifier encore une fois .

    Cordialement,
    Idriss

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 90
    Par défaut
    PouahWou, c'est de la ballounette, ça marche terriblement bien; c'est exactement le rendu que je souhaitais.
    MERCI beaucoup ok.Idriss pour cette généreuse aide.

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 90
    Par défaut
    Trop bien. J'ai simplifier le script, il est au petit oignon, exactement comme je voulais
    d'autant plus avec la commande pour rendre executable le script
    du coup le script y fait ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/bash
     
    arg1=$1 # premier arg de la ligne de commande
    arg2=$2 # second
    if [ $arg1 -lt $arg2 ]
    then 
        echo "$arg1 est inferieur a $arg2"
    else 
        echo "$arg2 est inferieur a $arg1"
    fi
    avec un petit :
    $chmod +x classe
    Après on fait par exemple:
    $./classe 26 10
    10 est inférieur à 26

    TOP

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

Discussions similaires

  1. bourne shell init de tableau
    Par pcouas dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 08/09/2011, 22h00
  2. deux exercices de scripts shell à résoudre
    Par sadiqmrd dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 04/06/2011, 20h25
  3. tester l'existence d'une variable en bourne SHELL
    Par nicolas.pailheret dans le forum Linux
    Réponses: 1
    Dernier message: 14/04/2009, 17h28
  4. Code en bourne shell du jeu Le "PENDU"
    Par piment dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 20/07/2007, 14h17
  5. Fonction until en bourne shell
    Par alexp dans le forum Linux
    Réponses: 4
    Dernier message: 05/07/2006, 10h43

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