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, dans lesquels nous avons discuté des variables en détail, ont été très appréciés par nos lecteurs. En tant que Tecmint-Team, nous sommes très désireux de vous fournir les sujets les plus récents, les plus récents et les plus pertinents, traités en détail. De plus, nous essayons toujours d'aborder les principales 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 dans Shell avant de fermer ce sujet.

Bash effectue une substitution de variable 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 les remplace par la valeur de la variable. Le processus de substitution de variable Bash n'est effectué qu'une seule fois. Et si nous avions des variables imbriquées ?

Remarque : Par variable imbriquée, nous entendons une variable déclarée à l'intérieur d'une 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"

La situation est maintenant la suivante : 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 sur une ligne ci-dessous ?

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

Il doit 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 qui est « linux-console.net ». Le résultat final de l’exécution de la commande ci-dessous devrait donc ê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? Ouais! Bash remplace la valeur de la variable une seule fois. Qu'en est-il des scripts et des programmes complexes dans lesquels nous devons remplacer fréquemment des variables ainsi que la variable plus d'une fois ?

Voici la commande 'eval' qui effectue un travail supplémentaire de substitution de variable 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 unique de variable BASH, qui n'effectue pas de cycle 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 constitue 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, sauf quelques-uns. Dans le cadre du processus d'apprentissage, nous présentons la liste de variables prédéfinies BASH.

No. BASH VARIABLE RESULT
1 auto_resume Process command completion for the stopped jobs.
2 BASH PATH of the shell.
3 BASH_ENV Shows the name of the profile file
4 BASH_VERSION Shows the version of Bash
5 BASH_VERSINFO Shows Detailed version information.
6 BASH_VERSINFO[0] The major version number (the release).
7 BASH_VERSINFO[1] The minor version number (the version).
8 BASH_VERSINFO[2] The patch level.
9 BASH_VERSINFO[3] The build version.
10 BASH_VERSINFO[4] The release status (for example, beta1 ).
11 BASH_VERSINFO[5] The value of MACHTYPE .
12 CDPATH List of directories separated by colon.
13 COLUMNS Number of Characters per line on Standard Output.
14 EUID User ID of the current user.
15 FCEDIT The default text editor for the fc command.
16 FUNCNAME The name of the fun
17 GROUPS Groups of which the user is a Member.
18 HISTFILE The file containing the command history.
19 HOME The name of your home directory.
20 LINES Number of horizontal lines on Standard Output.
21 MAIL Name of a file to check for incoming mail
22 OSTYPE Name of the operating system.
23 OLDPWD The previous working directory
24 PWD The current working directory
25 RANDOM Prints a random number
26 SHELL The preferred shell to use
27 TIMEFORMAT The format for the time command.
28 UID The ID of the current user

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

C'est tout pour le moment. Je reviendrai ici 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 commentaires ci-dessous.