SkayaWiki

L2.2-05

JeromePetazzoni :: DerniersChangements :: DerniersCommentaires? :: ParametresUtilisateur :: http://www.enix.org/ :: Vous êtes ec2-18-220-160-216.us-east-2.compute.amazonaws.com

Les arguments d'un programme



En shell

Dans un script shell, on accéde aux arguments à travers certaines variables spéciales. Pour commencer on va écrire notre premier script shell: créer un fichier script1 avec les droits en execution. La première ligne du script doit être #!/bin/bash: ceci indique que c'est le programme bash qui va interpréter le fichier.

Dans ce script, commencer par déclarer quelques variables (par exemple i="toto") et executer quelques commandes (par exemple echo "valeur de i: " $i). Pour écrire un commentaire précéder celui-ci d'un #: le reste de la ligne sera concidéré comme un commentaire.

Il existe un certain nombre de variables spéciales qui permettent de manipuler les arguments passés au script:
- *
- @
- #
- 0 (zéro)
- n (n étant un entier, par exemple echo $1).

Afficher la valeur de chacune de ces variables avec la commande echo et invoquer plusieur fois votre script avec des arguments différents.

Modifier maintenant votre script pour qu'il effectue les actions suivantes:
- Affichage des 3 variables *, @ et #
- appel de la commande shift 2
- affichage de la valeur de retour de cette commande (celle-ci est mise dans la variable ?)
- Affichage des 3 variables *, @ et #

Tester à nouveau votre script en changeant la valeur de shift.

Il existe deux types de boucles en shell while et for (plusieurs variantes pour cette dernière). La boucle while s'utilise comme suit:

while instruction1; instruction2; ... instructionN;
do
intructionA ...
...
instructionZ
done;


Les instructions A...Z sont répétées tant que la valeur de retour de instructionN est non nulle. Sachant que la commande shift à un code de retour nul si le décalage demandé est supperieur aux nombres d'arguments restant dans la variable $@, afficher les arguments du script avec une boucle while, faîte de même avec les arguments pairs.

Enfin, une des forme de la boucle for est la suivante:

for i in liste
do
instructionA
...
instructionZ
done;

liste est une liste de valeurs prises successivement par la variable i. Utiliser la boucle for et la variable * pour afficher les arguments du script. Ecrire à la suite une deuxième boucle for affichant les arguments du script avec la variable @ entre guillemets ("$@"). Invoquer votre script avec plusieurs arguments, essayer avec des arguments contenant des espaces (par exemple ./script "toto toto" titi "bla bla").

En C

En C, l'accès aux arguments du programme se fait à l'aide de deux arguments de la fonction main:

int main(int argv, char *
*argv, char **arge)

L'argument arge permet d'obtenir la liste des variables d'environement du programme. Sachant que les tableaux argv et arge se terminent par la valeur NULL, afficher la liste des arguments et des variables du programme en utilisant deux boucles
while et sans déclarer de variable dans le programme. Tester votre programme avec plusieurs arguments, en particulier
avec des arguments contenant des espaces.

Pour finir: Finisser le TD précédent !
Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]