Recherche de site Web

Substitution de variables imbriquées et variables BASH prédéfinies sous Linux - Partie 11


Les deux derniers articles sur BASH Shell, où nous avons discuté des variables en détail, ont été très appréciés par nos lecteurs. En tant qu’équipe Tecmint, nous sommes très désireux de vous fournir des sujets les plus récents, à jour et pertinents couverts en détail. De plus, nous essayons toujours d’aborder les grandes perspectives des sujets correspondants.

Voici le dernier article sur les variables Linux où nous allons voir la substitution de variables et les variables définies en Shell avant de clore ce sujet.

Bash effectue la substitution de variables avant que la commande ne soit réellement exécutée. Le Linux Bash Shell recherche tous les signes '$' avant d’exécuter la commande et de le remplacer par la valeur de variable. Le processus de substitution de la variable Bash n’est effectué qu’une seule fois. Et si nous avions des variables imbriquées ?

Remarque : Par variable imbriquée, nous entendons la variable déclarée à l’intérieur de la variable. Voyons le scénario ci-dessus dans l’exemple ci-dessous.

Déclarez une variable en lecture seule et exécutable comme ci-dessous.

avi@localhost:~$ declare -rx Linux_best_website="linux-console.net"

Vérifiez la valeur de la variable stockée.

avi@localhost:~$ printf "%s" "$Linux_best_website" 

linux-console.net

Déclarez maintenant une autre variable qui est à nouveau en lecture seule et exécutable.

avi@localhost:~$ declare -rx Linux_website="Linux_best_website"

Maintenant, la situation est que nous avons défini deux variables.

'Linux_best_website', dont la valeur est « linux-console.net « 
et Linux_website », dont la valeur est « Linux_best_website »

Quel serait le résultat, si nous exécutions la commande ci-dessous d’une ligne ?

avi@localhost:~$ printf "%s" "$Linux_website"

Il faut d’abord remplacer la variable '$Linux_website', par la valeur « Linux_best_website " puis « $Linux_best_website » est à nouveau une variable dont la valeur est « linux-console.net « . Donc, le résultat final de l’exécution de la commande ci-dessous devrait être.

avi@localhost:~$ printf "%s" "$Linux_website" 

linux-console.net

Mais malheureusement, ce n’est pas le cas, le résultat que nous obtenons est Linux_best_website.

Raison? Oui! Bash ne substitue la valeur de la variable qu’une seule fois. Qu’en est-il des scripts et des programmes complexes où nous devons substituer des variables fréquemment ou plus d’une fois ?

Voici la commande 'eval' qui effectue un travail supplémentaire de substitution de variables plus d’une fois dans un script. Voici un exemple pour rendre l’ensemble aussi clair que du verre.

Déclarez une variable x dont la valeur est 10.

avi@localhost:~/Desktop$ declare x=10

Vérifiez la valeur de la variable x, que nous venons de définir.

avi@localhost:~/Desktop$ echo $yx

x10

Déclarez une variable y, dont la valeur est x.

avi@localhost:~/Desktop$ declare y=x

Vérifiez la valeur de la variable y, que nous venons de définir.

avi@localhost:~/Desktop$ echo $y 

x

Voici le problème de la substitution de variable BASH une fois, qui n’effectue pas un tour supplémentaire de substitution de variable. Nous utilisons la commande 'eval' pour résoudre ce problème.

avi@localhost:~/Desktop$ eval y=$x

Vérifiez maintenant la valeur de la variable 'y'.

avi@localhost:~/Desktop$ echo $y 

10

Hourra! Le problème a été résolu et la commande 'eval' a remporté la course :)

Sans oublier que la commande 'eval' est très utile dans les grands programmes de script et est un outil très pratique.

La dernière partie de cet article, mais non la moindre, concerne les variables prédéfinies BASH. Non! Ne paniquez pas en voyant cette liste. Vous n’avez jamais besoin de vous souvenir de toute la liste avant de commencer à écrire des scripts, à l’exception de quelques-uns. Dans le cadre du processus d’apprentissage, nous présentons la liste de variables prédéfinies BASH.

Non.BASH VARIABLERÉSULTAT
1auto_resume Achèvement de la commande de traitement pour les tâches arrêtées.
2BASHPATH du shell.
3BASH_ENVAffiche le nom du fichier de profil
4BASH_VERSIONAffiche la version de Bash
5BASH_VERSINFOAffiche des informations détaillées sur la version.
6BASH_VERSINFO[0] Le numéro de version majeur (la version).
7BASH_VERSINFO[1] Le numéro de version mineure (la version).
8BASH_VERSINFO[2] Le niveau du patch.
9BASH_VERSINFO[3] La version de construction.
10BASH_VERSINFO[4] L’état de la version (par exemple, beta1 ).
11BASH_VERSINFO[5]La valeur de MACHTYPE .
12CDPATH Liste des répertoires séparés par deux-points.
13COLONNES Nombre de caractères par ligne sur la sortie standard.
14EUID ID utilisateur de l’utilisateur actuel.
15FCEDIT L’éditeur de texte par défaut pour la commande fc.
16FUNCNAMELe nom du fun
17GROUPES Groupes dont l’utilisateur est membre.
18HISTFILE Le fichier contenant l’historique des commandes.
19HOME Le nom de votre répertoire personnel.
20LINES Nombre de lignes horizontales sur la sortie standard.
21MAIL Nom d’un fichier pour vérifier le courrier entrant
22OSTYPE Nom du système d’exploitation.
23OLDPWD Le répertoire de travail précédent
24PWD Le répertoire de travail actuel
25RANDOM Imprime un nombre aléatoire
26SHELLLe shell préféré à utiliser
27TIMEFORMAT Le format de la commande time.
28UIDL’ID de l’utilisateur actuel

Il existe une énorme liste de variables BASH prédéfinies. Nous avons essayé de produire une liste des plus fréquemment utilisés.

C’est tout pour l’instant. Je serai de retour avec un autre article intéressant. D’ici là, restez à l’écoute et connecté à TecMint. N’oubliez pas de nous faire part de vos précieux commentaires dans la section des commentaires ci-dessous.

Articles connexes: