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

Linux Discussion :

script shell et arguments en entrée


Sujet :

Linux

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 298
    Points : 85
    Points
    85
    Par défaut script shell et arguments en entrée
    Bonjour,

    je debut en programmation shell jaimerai bien savoir comment prendre en entrée
    des paramètres ...et comment les utiliser dans le shell


    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 214
    Points : 310
    Points
    310
    Par défaut
    Le plus simple reste le $1, $2, $3...

    Mais tu as toutes les subtilités dans le man bash (pour le shell bash...).

  3. #3
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    salut,

    j'ajouterai aussi que les paramètres sont limités à "9" $1 $2..$9 le $0 est réservé au nom du fichier de commandes
    pour capturer tous les paramètres dans une collection tu peux utiliser $*
    le nombre de paramètres est stoké dans la variable $#

  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
    Citation Envoyé par I'm_HERE
    les paramètres sont limités à "9"
    hein ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    listP() {
    echo $@
    echo ${10}
    }
    listP {1..11}
    1 2 3 4 5 6 7 8 9 10 11
    10
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    salut,

    Citation Envoyé par N_BaH Voir le message
    hein ?
    désolé, pour ne pas me faire comprendre, je faisais allusion à ceci:

    $10 $12 $13 $14 ..etc et sans passer par $@

    es-ce que tu peux aller au delà de 9 paramètres ?

    Citation Envoyé par N_BaH Voir le message
    hein ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    listP() {
    echo $@
    echo ${10}
    }
    listP {1..11}
    1 2 3 4 5 6 7 8 9 10 11
    10
    on peux facilement contourné ce problème avec un simple shift

    <EDIT>
    j'ai trouvé cette syntaxe ${10},${11}
    </EDIT>

  6. #6
    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
    Citation Envoyé par I'm_HERE
    <EDIT>
    j'ai trouvé cette syntaxe ${10},${11}
    </EDIT>
    oui, c'est là
    Citation Envoyé par I'm_HERE
    Citation Envoyé par N_BaH
    hein ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    listP() {
    echo $@
    echo ${10} <--là
    }
    listP {1..11}
    1 2 3 4 5 6 7 8 9 10 11
    10
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    hein ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    listP() {
    echo $@
    echo ${10}
    }
    listP {1..11}
    1 2 3 4 5 6 7 8 9 10 11
    10
    Ils ont longtemps été limités à 9 (/bin/sh, /bin/ksh). Le bash a étendu cette possibilité mais pour ceux qui travaillent sur des Unix plus anciens encore en activités (comme Solaris par exemple), taper dans du ${10}, ${11}, ${12} etc n'est pas portable. Accessoirement, j'imagine mal qu'on puisse avoir besoin de plus de 9 arguments différents (déjà qu'il est rare d'arriver à 3)...

    PS: la limite max du nb d'arguments est définie par la constante ARG_MAX utilisée dans les sources du noyau. Ainsi n'importe qui peut se recompiler son petit noyau avec sa propre limite perso...

    Citation Envoyé par I'm_HERE Voir le message
    j'ai trouvé cette syntaxe ${10},${11}
    En fait c'est une syntaxe destinée à faire comprendre au shell quel est le nom réel de la variable
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    prix=10
    echo "Mon vélo coute $prixF"
    Ne fonctionnera pas car le shell ira chercher le contenu de la variable "prixF" sans comprendre qu'on veut en fait la variable "prix" suivie de la lettre "F".

    Pour lui faire comprendre, faut isoler le nom réel de la variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    prix=10
    echo "Mon vélo coute ${prix}F"
    Inversement, afficher $10 donnera $1 suivi du caractère 0 (car jusqu'à peu, $10 n'existait pas et même aujourd'hui, a peu de chances d'être utilisé donc les programmeurs bash lui font choisir la possibilité la plus probable). Et donc si on veut $10 il est impératif d'écrire ${10}

    Accessoirement, cette écriture ${...} présente d'autres avantages, comme ${var:-valeur} qui renvoie la chaine "valeur" si $var est vide ou non existante (utile pour programmer les valeurs par défaut)...
    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]

  8. #8
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    salut Sve@r,

    Citation Envoyé par Sve@r Voir le message
    Ils ont longtemps été limités à 9 (/bin/sh, /bin/ksh).
    c'est la raison pour la quelle j'ai dis dans mon premier post que:
    j'ajouterai aussi que les paramètres sont limités à "9" $1 $2..$9
    car j'avais travailler autrefois avec sh et j'ai vu que la limite était 9 paramètres.

    Citation Envoyé par Sve@r Voir le message
    Le bash a étendu cette possibilité
    je ne le savais pas merci..

Discussions similaires

  1. Script shell: afficher le texte entre 2 bornes.
    Par panchan173 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 18/07/2012, 16h24
  2. script shell : comparer 2 répertoires entre eux
    Par Chicna dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 19/09/2011, 18h42
  3. Script shell - gestion user, touche entrée
    Par monsieur75 dans le forum Linux
    Réponses: 23
    Dernier message: 31/03/2009, 17h24
  4. Réponses: 3
    Dernier message: 15/02/2006, 17h46
  5. Script shell (argument)
    Par melmouj dans le forum Linux
    Réponses: 2
    Dernier message: 17/01/2006, 16h42

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