Stations de travail en ligne OnWorks Linux et Windows

Logo

Hébergement gratuit en ligne pour les postes de travail

<Précédent | Table des matières | Suivant>

Variables et constantes

Cependant, il y a un problème avec notre script. Remarquez comment la chaîne « Rapport d'informations système » est répétée ? Avec notre petit script ce n'est pas un problème, mais imaginons que notre script soit vraiment long et que nous ayons plusieurs instances de cette chaîne. Si nous voulions changer le titre en quelque chose d'autre, nous devions le changer à plusieurs endroits, ce qui pourrait représenter beaucoup de travail. Et si nous pouvions arranger le script pour que la chaîne n'apparaisse qu'une seule fois et non plusieurs fois ? Cela faciliterait grandement la maintenance future du script. Voici comment nous pourrions le faire :



#! / Bin / bash


# Programme pour afficher une page d'informations système


title="Rapport d'informations système"


écho "

$titre

$titre

"

#! / Bin / bash


# Programme pour afficher une page d'informations système


title="Rapport d'informations système"


écho "

$titre

$titre

"


En créant un variable nommé titre et en lui attribuant la valeur « System Information Report », nous pouvons profiter de l'expansion des paramètres et placer la chaîne à plusieurs endroits.

Alors, comment crée-t-on une variable ? Simple, nous l'utilisons simplement. Lorsque le shell rencontre une variable, il la crée automatiquement. Cela diffère de nombreux langages de programmation dans lesquels les variables doivent être explicitement a déclaré ou défini avant utilisation. Le shell est très laxiste à ce sujet, ce qui peut entraîner certains problèmes. Par exemple, considérons ce scénario joué sur la ligne de commande :


[moi@linuxbox ~]$ foo="oui" [moi@linuxbox ~]$ écho $foo Oui

[moi@linuxbox ~]$ echo $ imbécile


[moi@linuxbox ~]$

[moi@linuxbox ~]$ foo="oui" [moi@linuxbox ~]$ écho $foo Oui

[moi@linuxbox ~]$ echo $ imbécile


[moi@linuxbox ~]$


Nous attribuons d'abord la valeur « oui » à la variable foo, puis afficher sa valeur avec echo. Ensuite, nous affichons la valeur du nom de variable mal orthographié comme « imbécile » et obtenons un résultat vide. C'est parce que le shell a heureusement créé la variable tromper quand il l'a rencontré, et lui a donné la valeur par défaut de rien, ou vide. De là, on apprend qu'il faut faire très attention à notre orthographe ! Il est également important de comprendre ce qui s'est réellement passé dans cet exemple. D'après notre examen précédent de la façon dont le shell effectue les expansions, nous savons que la commande :



[moi@linuxbox ~]$ echo $foo

[moi@linuxbox ~]$ echo $foo


subit une expansion des paramètres et se traduit par :



[moi@linuxbox ~]$ echo oui

[moi@linuxbox ~]$ echo oui


Considérant que la commande :



[moi@linuxbox ~]$ echo $fool

[moi@linuxbox ~]$ echo $fool


se développe en :



[moi@linuxbox ~]$ echo

[moi@linuxbox ~]$ echo


La variable vide se développe en rien ! Cela peut faire des ravages avec les commandes qui nécessitent des arguments. Voici un exemple :



[moi@linuxbox ~]$ foo=foo.txt [moi@linuxbox ~]$ foo1=foo1.txt [moi@linuxbox ~]$ cp $fou $fou

cp : opérande du fichier de destination manquant après `foo.txt'

[moi@linuxbox ~]$ foo=foo.txt [moi@linuxbox ~]$ foo1=foo1.txt [moi@linuxbox ~]$ cp $fou $fou

cp : opérande du fichier de destination manquant après `foo.txt'


Essayez `cp --help' pour plus d'informations.

Essayez `cp --help' pour plus d'informations.


Nous attribuons des valeurs à deux variables, foo ainsi que foo1. Nous effectuons ensuite un cp, mais orthographiez mal le nom du deuxième argument. Après expansion, le cp La commande n'est envoyée qu'avec un seul argument, bien qu'elle en requière deux.

Il existe quelques règles concernant les noms de variables :

1. Les noms de variables peuvent être constitués de caractères alphanumériques (lettres et chiffres) et de caractères de soulignement.

2. Le premier caractère d'un nom de variable doit être une lettre ou un trait de soulignement.

3. Les espaces et les symboles de ponctuation ne sont pas autorisés.

Le mot « variable » implique une valeur qui change, et dans de nombreuses applications, les variables sont utilisées de cette façon. Cependant, la variable dans notre application, titre, est utilisé comme constant. Une constante est comme une variable dans la mesure où elle a un nom et contient une valeur. La différence est que la valeur d'une constante ne change pas. Dans une application qui effectue des calculs géométriques, nous pourrions définir PI comme constante, et lui attribuer la valeur de 3.1415, au lieu d'utiliser le numéro littéralement tout au long de notre programme. Le shell ne fait aucune distinction entre les variables et les constantes ; ils sont principalement pour la commodité du programmeur. Une convention courante consiste à utiliser des lettres majuscules pour désigner les constantes et des lettres minuscules pour les vraies variables. Nous allons modifier notre script pour respecter cette convention :



#! / Bin / bash

# Programme pour afficher une page d'informations système TITRE="Rapport d'informations système Pour $HOSTNAME" écho "

$TITRE

$TITRE

"

#! / Bin / bash

# Programme pour afficher une page d'informations système TITRE="Rapport d'informations système Pour $HOSTNAME" écho "

$TITRE

$TITRE

"


Nous en avons également profité pour égayer notre titre en ajoutant la valeur de la variable shell

NOM D'HTE. Il s'agit du nom de réseau de la machine.


image

Notes: Le shell fournit en fait un moyen d'imposer l'immuabilité des constantes, grâce à l'utilisation du déclarer commande intégrée avec le -r option (lecture seule). avions-nous attribué TITRE par ici:


declare -r TITLE="Titre de la page"


le shell empêcherait toute affectation ultérieure à TITRE. Cette fonctionnalité est rarement utilisée, mais elle existe pour les scripts très formels.


image


 

Meilleur système d'exploitation Cloud Computing chez OnWorks :