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.netDé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.netMais 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=10Vérifiez la valeur de la variable x, que nous venons de définir.
avi@localhost:~/Desktop$ echo $yx
x10Déclarez une variable y, dont la valeur est x.
avi@localhost:~/Desktop$ declare y=xVérifiez la valeur de la variable y, que nous venons de définir.
avi@localhost:~/Desktop$ echo $y
xVoici 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=$xVérifiez maintenant la valeur de la variable 'y'.
avi@localhost:~/Desktop$ echo $y
10Hourra! 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 VARIABLE | RÉSULTAT |
| 1 | auto_resume | Achèvement de la commande de traitement pour les tâches arrêtées. |
| 2 | BASH | PATH du shell. |
| 3 | BASH_ENV | Affiche le nom du fichier de profil |
| 4 | BASH_VERSION | Affiche la version de Bash |
| 5 | BASH_VERSINFO | Affiche des informations détaillées sur la version. |
| 6 | BASH_VERSINFO[0] | Le numéro de version majeur (la version). |
| 7 | BASH_VERSINFO[1] | Le numéro de version mineure (la version). |
| 8 | BASH_VERSINFO[2] | Le niveau du patch. |
| 9 | BASH_VERSINFO[3] | La version de construction. |
| 10 | BASH_VERSINFO[4] | L’état de la version (par exemple, beta1 ). |
| 11 | BASH_VERSINFO[5] | La valeur de MACHTYPE . |
| 12 | CDPATH | Liste des répertoires séparés par deux-points. |
| 13 | COLONNES | Nombre de caractères par ligne sur la sortie standard. |
| 14 | EUID | ID utilisateur de l’utilisateur actuel. |
| 15 | FCEDIT | L’éditeur de texte par défaut pour la commande fc. |
| 16 | FUNCNAME | Le nom du fun |
| 17 | GROUPES | Groupes dont l’utilisateur est membre. |
| 18 | HISTFILE | Le fichier contenant l’historique des commandes. |
| 19 | HOME | Le nom de votre répertoire personnel. |
| 20 | LINES | Nombre de lignes horizontales sur la sortie standard. |
| 21 | Nom d’un fichier pour vérifier le courrier entrant | |
| 22 | OSTYPE | Nom du système d’exploitation. |
| 23 | OLDPWD | Le répertoire de travail précédent |
| 24 | PWD | Le répertoire de travail actuel |
| 25 | RANDOM | Imprime un nombre aléatoire |
| 26 | SHELL | Le shell préféré à utiliser |
| 27 | TIMEFORMAT | Le format de la commande time. |
| 28 | UID | L’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.
