Recherche de site Web

Comprendre et écrire des 'variables Linux' dans les scripts shell - Partie 10


Le langage de script shell Linux a toujours été un sujet brûlant et le sera toujours à l’avenir. Le Shell Scripting Language est magique et il est si facile de faire un programme dans le langage de script que dans n’importe quel autre langage. Cependant, il faut une connaissance approfondie de ce que nous faisons et du résultat attendu.

Tous les articles de script shell que nous avons écrits pour nos lecteurs sont très appréciés, y compris le dernier « An Insight of Linux Variables ». Nous étendons le dernier article à un nouveau niveau.

Attributs de variable

Chaque variable dans l’environnement Linux a certaines options, et celles-ci sont appelées 'attributs'. Ces options ou attributs peuvent être activés et désactivés, lorsque nécessaire selon la situation, à l’aide d’une commande « déclarer ».

Un exemple d’attribut de variable consiste à utiliser un commutateur, par exemple '-i', qui activera l’attribut entier pour la variable correspondante. Même si une valeur non numérique est passée à l’interrupteur '-i', il ne lancera pas de message d’erreur et ne produira pas '0' en tant qu’interprétation entière. Ici, cela devient plus clair à partir de l’exemple ci-dessous.

Déclarer une variable Entier, facture=121

avi@localhost:~$ declare -i bill=121

Imprimez la valeur de la facture variable.

avi@localhost:~$ printf "%d\n" "$bill" 

121

Soit la valeur de la variable une chaîne de caractères. La facture variable est déjà déclarée, pas besoin de la déclarer une deuxième fois. Il suffit de changer la valeur de la variable comme.

avi@localhost:~$ bill=tecmint

Maintenant, imprimez à nouveau la valeur de la facture variable.

avi@localhost:~$ printf "%d\n" "$bill" 

0

Remarquez « 0 » à la place du message d’erreur.

Maintenant, la question est de savoir comment connaître les attributs des variables déjà déclarées ?
avi@localhost:~$ declare -p bill 

declare -i bill="121"

Ici, un commutateur -p (pour imprimer) vient à la rescousse.

Encore une fois, que dois-je faire pour désactiver les attributs d’une variable ?

Pour désactiver les attributs d’une variable, nous avons besoin de mettre un signe + (plus) juste avant le changement. Ici, c’est plus clair à partir de l’exemple ci-dessous.

Désactivez l’attribut integer pour la variable ci-dessus.

avi@localhost:~$ declare +i bill

Vérifiez la valeur de la variable.

avi@localhost:~$ printf "%d\n" "$bill" 

bash: printf: bill: invalid number
0

Imprimez maintenant la valeur de la variable à l’aide de la chaîne de commutation.

avi@localhost:~$ printf "%s\n" "$bill" 

tecmint

Ici, dans l’exemple ci-dessus, bash ne pourrait pas juger une valeur non numérique comme une erreur, mais printf interprète ce qui pourrait être un nombre et ce qui ne pourrait pas être.

Variables en lecture seule

Vous avez peut-être entendu parler de la mémoire en lecture seule (ROM), mais qu’est-ce qu’une variable en lecture seule ? A-t-il une similitude avec ROM ?

Eh bien, les variables en lecture seule, comme la mémoire en lecture seule, sont quelque chose dont la valeur ne peut pas être modifiée une fois qu’elle est attribuée. C’est pourquoi on l’appelle en lecture seule. Vous ne pouvez pas écrire, modifier ou modifier une nouvelle valeur pour cette variable. Voici une illustration à l’aide d’un exemple.

Décalre un nom de variable en lecture seule (-r) dont la valeur est « linux-console.net « .

avi@localhost:~$ declare -r name="linux-console.net"

Printf la valeur de la variable déclarée ci-dessus.

avi@localhost:~$ printf "%s\n" "$name" 

linux-console.net

Essayez de changer la valeur de variable.

avi@localhost:~$ declare -r name="Avishek" 

bash: declare: name: readonly variable

Comme nous l’avons vu ci-dessus, les attributs d’une variable en lecture seule peuvent être modifiés à l’aide du signe « + ».

Exportation de variables sous Linux

Toutes les variables shell déclarées dans un script shell sont disponibles jusqu’à ce que le script soit en cours d’exécution. En dehors du script, la variable du script n’existe pas. Le processus de mise à disposition de variables en dehors du script s’appelle l’exportation de variables.

Une variable peut être exportée en dehors de l’interpréteur à l’aide de l’option switch declare -x (exportation), qui reconnaît à l’interpréteur ce que vous souhaitez exporter. Un commutateur d’exportation declare peut être utilisé comme.

avi@localhost:~$ declare -x variable=”Constant_Value”

Toutes les modifications apportées à la variable pendant l’exécution du script sont perdues lorsque la variable est exportée en dehors du script. L’exportation de variables est très importante dans les scripts shell.

Nous voulons avoir une variable qui doit être en lecture seule et disponible en dehors du script, nous devons utiliser switch -r et switch -x en même temps.

avi@localhost:~$ declare -rx variable=”Constant_Value”

Variables d’environnement

Variables partagées entre le programme et le programme qui les exécute. Les variables d’environnement peuvent être exportées, mais les attributs ne peuvent pas leur être attribués.

Comprendre la théorie ci-dessus de manière pratique. Ici, nous avons deux scripts 0.sh et 1.sh.

# 0.sh
#!/bin/bash 
declare -rx name=Tecmint 
bash 0.sh 
exit 0

Et le deuxième scénario l’est.

# 1.sh
#!/bin/bash 
printf "%s\n" "$name" 
name=linux-console.net 
printf "%s\n" "$name"
exit 0

Ici, ce qui se passe, c’est qu’une variable (nom) est déclarée en lecture seule et exportée et immédiatement après, ce deuxième script est appelé.

Le deuxième script vient d’imprimer la variable du premier script qui a été exporté dans la première instruction printf. Dans la deuxième instruction printf, elle affiche la nouvelle valeur attribuée à la variable 'name'.

Pas besoin de s’inquiéter, que la variable était en lecture seule, comment peut-elle être réaffectée. Ne vous souvenez-vous pas que "Toutes les modifications apportées à la variable pendant l’exécution du script, sont perdues lorsque la variable est exportée en dehors du script. ”

Références

La commande declare autorise tous les commutateurs ci-dessous ainsi que leur combinaison.

  1. -a : Déclare un tableau.
  2. -f : Fonction d’affichage et définition.
  3. -f : Afficher le nom de la fonction.
  4. -r : Déclarer la variable en lecture seule.
  5. -x : Déclarer la variable comme exportable.
  6. -I : Déclarer la variable en Entier.

C’est tout pour l’instant. Dans le tout prochain article, nous discuterons des moyens de substituer des variables à l’aide de la commande 'eval' et des variables déjà définies dans bash avant de clore ce sujet. J’espère que vous appréciez votre voyage vers l’approfondissement de la scriptation. D’ici là, restez à l’écoute et connecté à linux-console.net.

Articles connexes: