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 :

La programmation "Shell" [Tutoriel]


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut La programmation "Shell"
    Bonjour à tous.

    Je vous propose le cours suivant : La programmation "Shell"

    Cet article est un cours complet sur l'apprentissage de la programmation Shell.

    Ce cours propose globalement une syntaxe Bourne Shell avec quelques éléments spécifiques aux shells de même famille dits "plus évolués" (Korn Shell ou Bourne Again Shell) qui seront indiqués au moment où cela sera nécessaire. Le Bourne Shell étant intégralement supporté par le Korn Shell et le Bourne Again Shell (et leurs descendants), cela permet une compatibilité ascendante : un script en Bourne Shell fonctionnera toujours en environnements Korn Shell ou Bourne Again Shell ou shells descendants.
    N'hésitez pas à laisser vos impressions ici.

    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

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

    Bravo! Gros boulot.

    [erratum]J'ai pas tout lu mais page 3 III-C, le texte parle de set -* alors que l'exemple affiche set ?x.[/erratum]

  3. #3
    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
    Il s'agit bien d'une erreur à la génération du document je pense. Je vais corriger ça.



    EDIT : corrigé

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut


    préciser qu'il existe deux ksh : ksh88 et ksh93 ?

    II-B
    afin de ne pas induire un futur contre-sens sur la signification du signe égal (qui fait une comparaison lexicale, et même si 5 peut être comparé lexicalement), je préférerais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if test "chaîne" = "chaîne"
    III-A
    je préconise de mettre tout de suite les chaînes à afficher entre guillemets, avant que le lecteur n'essaie d'afficher des caractères qui demandent d'être protégés : ', (, *, ...

    IV-C
    un point d'interrogation remplace un tiret.
    lire :
    et nonil y en a encore à d'autres endroits.

    V
    $( ) est une spécification POSIX. Ce n'est plus depuis longtemps reservé aux shells "évolués".

    VI
    la différence entre $* et $@ est visible lorsqu'ils sont mis entre guillemets
    "$*" tous els arguments ne font qu'un seul mot
    "$@" les arguments sont "séparés"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i in "$*"; do echo "< $i >"; done
    < arg1 arg2 argn >
    for i in "$@"; do echo "< $i >"; done
    < arg1 >
    < arg2 >
    < argn >
    VIII-B-7
    expr est une commande externe, on peut faire ce test en sh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test \( $(($y % 4 )) -eq 0 -a $(($y % 100)) -ne 0 \) -o $(( $y % 400 )) -eq 0
    IX-E
    je ne dis rien

    IX-F
    pourquoi ne pas montrer tout de suite la façon de faire avec l'* ?

    XI-D
    pas que les shells récents, c'est une spécification POSIX.

    XI-D
    le < doit être collé au numéro de descripteur de fichier
    XI-F
    là, on a vu l'évaluation arithmétique, on pourrait s'en servir pour le shift OPTIND

    XII-A
    expr n'est pas une commande interne (je l'ai déjà dit ? je radote, paraît-il.)

    XII-B
    mais grep non plus
    il faut peut-être le préciser dans le titre du chapitre ?


    à part ça :
    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 347
    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 347
    Par défaut
    Bonjour,

    Alors là, les gars, très bon boulot...
    On devrait maintenant voir apparaitre plus de script en pur shell...
    Sinon, même chose que Flodelarab en:
    IV-C, on a un read ?a au lieu de read -aIX-G, dans l'exemple, on a les test ? au lieu de test -.
    Dans la partie XII:
    l'option -l de wc ne compte pas les lignes mais les caractères newline:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ echo -n toto | wc -l
    0
    $ echo toto | wc -l
    1
    getopt permet aussi de gérer les options longues ce qui n'est pas le cas de getopts (voir exemples dans /usr/share/getopt/).

    A part ça, respect...
    Je me sens tout petit (Faut vraiment que je m'y mette à faire mon laïus sur sed).

  6. #6
    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.

    Merci pour vos commentaires. Oui visiblement on eu quelques que tirets qui sont mal passés lors de la gabarisation. Je vais faire une passe et les corriger au fur et à mesure.



    Idriss

    EDIT : bon j'ai corrigé ceux cités, il y en a peut être d'autres, je ferait une passe pour voir.

    Sinon je vais voir pour les autres remarques

  7. #7
    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.

    Citation Envoyé par N_BaH Voir le message
    préciser qu'il existe deux ksh : ksh88 et ksh93 ?
    Personnellement j'ai indiqué que certaines choses étaient apparues en KSH88 comme la syntaxe des doubles crochets mais je ne connais pas suffisamment les spécificités de KSH pour faire le distinguo entre KSH 88 et 93. Je suis un utilisateur de Bash à 100%

    Citation Envoyé par N_BaH Voir le message
    pourquoi ne pas montrer tout de suite la façon de faire avec l'* ?
    Ben disons que l'on présente le cas utilisé généralement par beaucoup de monde, le bug présenté et la correction...

    Idriss

Discussions similaires

  1. Livre sur la programmation linux (shell et noyau)
    Par Tchetch dans le forum Linux
    Réponses: 10
    Dernier message: 07/07/2004, 08h27

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