Scripting

Programmation du shell : Les variables

Programmer la ligne de commande à l’aide de variables
Première publication : .
Mise en ligne: 25 juin 2003.
Modifié le : 20 janvier 2004.
Par Frédéric Guerrier
Programmation du shell : Les variables , Shell, , tcsh, , Script, , variables

Nous avons étudiés dans un premier article la technique pour éxecuter une suite de commandes réunies dans un fichier unique, fichier qui se nomme alors un script shell. Nous allons entrevoir cette fois quelques bases de programmation, en particulier l’utilisation des variables...

Les variables

Nous avons vu la dernière fois ce qu’est une variable et comment l’utiliser dans des scripts, rapellons les quelques principes de base :

Une variable est une boite vide dans laquelle on peut stocker toute sorte d’informations. Ces informations peuvent changer, d’ou le terme variable.

Une variable est identifiée par un mot, c’est le nom de celle-ci. Ce nom peut comporter des lettres (majuscules ou minuscules), des chiffres, ainsi que le caractère _, mais ne peut commencer par un chiffre.Il existe des variables qui ne respectent pas cette convention de nommage, mais il s’agit alors de variables spéciales créées par le shell lui-même.

-  Vous pouvez créer des variables dans un script, mais elles existerons seulement dans ce script
-  Pour placer une information dans une variable avec tcsh on utilise la commande set
-  Pour lire le contenu d’une variable, vous devez lui prefixer $, et l’afficher grâce à la commande echo

Il existe un certain nombre de variables réservées dites d’environnement, propres à chaque shell, pour connaître celle définies pour tcsh sur votre machine tapez simplement :


[g4:~] gunjin% env
HOME=/Users/gunjin
SHELL=/bin/tcsh
USER=gunjin
LANG=fr_FR
PATH=/Users/gunjin/bin:/sw/bin:/sw/sbin:/bin:/sbin: etc...

TERM=vt100
TERMCAP=¿ÿ×à
TERM_PROGRAM=Apple_Terminal
TERM_PROGRAM_VERSION=81
LOGNAME=gunjin
HOSTTYPE=macintosh
VENDOR=apple
OSTYPE=darwin
MACHTYPE=powerpc
SHLVL=1
PWD=/Users/gunjin
GROUP=staff
HOST=g4.local.
ENV_SET=
MANPATH=/Users/gunjin/man:/usr/local/share/man:/usr/share/man

Il se peut que le résultat obtenu sur votre Mac soit sensiblement différent, mais ce n’est pas très important, passons à la suite :)


L’importance des quotes

Les quotes, qui prennent, pour le shell tcsh, la forme de guillemets, d’apostrophes, ou d’apostrophes inverses, ont une signification importante en programmations shell. Elles permettent de faire varier sensiblement la manière dont le shell interprête le contenu des variables, en protegeant certains caractères, par exemple nous ne pouvons pas faire ceci :

Les espaces sont habituellement utilisés pour séparer les arguments des commandes, nous devons donc le protéger avec des guillemets :

Voilà qui fonctionne mieux :)

Il est aussi possible de protéger les caractères spéciaux comme l’espace en les faisant précéder d’un anti-slash \, c’est un peu plus contraignant mais peut représenter une alternative :

Nous avons évoqués dans l’article précédent l’usage des apostrophes inverses pour placer une commande dans une variable :

L’exemple est frappant en ce qui concerne la variable date, qui stocke comme on peut s’en douter la date actuelle :

Il convient de la protéger pour en lire le contenu :


Modification des variables

La définition et la modifiaction des variables sont aisées. Losrque l’on veut modifier le contenu d’une variable de shell, il suffit d’écraser son contenu à l’aide d’une nouvelle valeur :

La plupart du temps, nous aurons besoin d’utiliser le contenu de nos variables pour en créer de nouvelles, même si le shell traite toutes les variables commes des chaines de caractères, il est possible de réaliser des calculs arithmétiques avec ces dernières, toutefois, il convient de prendre certaines précautions :

L’opération à concaténé (mise bout à bout) le contenu de $nombre avec la chaine de caratères +1, sans faire le calcul, pour remédier à ce problème, nous devons évaluer notre variable pour que l’opération retourne le résultat escompté :

Les arguments doivent être séparés par des espaces et ne sont pas optionnels. Pour connaître les possibilités de la commande expr, consultez son manuel : % man expr


Les variables de positionnement

Nous partirons du postulat que vous savez un minimum utiliser pico (traitement de texte dans le Terminal). Pour tester les exemples qui suivent nous allons nous positionner dans le répertoire de stockage de nos scripts, ouvrez l’application Terminal et rendez vous dans bin, dossier que nous avons crées la derniere fois à l’intérieur de votre dossier de départ, nous allons créer un dossier nommé cours_xrings, et nous rendre dedans pour effectuer nos tests :

Il existe une genre particulier de variables nommées variables de positionnement, elles sont créées automatiquement lors de l’éxécution d’un script, créez un script nommé par exemple ex2.sh :

Et testez ceci :

Sauvez le, rendez le exécutable, et éxecutez le :

La variable $0 contient le premier argument de la ligne de commande, donc le nom du script lui-même.

Ajoutons autre chose dans notre script :

Si nous éxécutons ce script en lui passant un paramètre, celui-ci sera placé dans la variable $1 :

Il existe d’autres variables de positionnement, ajoutons les principales à notre exemple :

Lançons le script avec 2 arguments :

Comme nous pouvons le constater dans ces exemples :

-  $0 représente le script lui-même.
-  $1, $2, $3, ... $n sont les arguments de 1 à n placés sur la ligne de commande.
-  $* contient les noms de tous les arguments, sauf l’argument 0.
-  $# contient le nombre d’arguments sauf l’argument 0.

Conclusion

Dans ce tutoriel nous avons appris ce qu’est une variable et comment l’utiliser dans la programmation du shell, avec les variables de positionnement, nous pourrons par exemple passer des arguments à nos scripts, la suite au prochain épisode...

Envoyer
L'e-mail du destinataire :

Votre Nom :

Votre e-mail :


 |  Imprimer |  Réagir
Copyright 2002-2017 xrings - Tous droits réservés - Mentions légales - Propulsé par SPIP - Webdesigner et référencement Frédéric Guerrier