Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
doc:programmation:shell:variables [17/01/2014 09:12] MicP [Définir une variable] |
doc:programmation:shell:variables [21/02/2023 17:17] (Version actuelle) agp91 [Utiliser les variables dans un script] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Les variables ====== | ====== Les variables ====== | ||
+ | |||
+ | * Objet : Les variables | ||
+ | * Niveau requis :{{tag>débutant avisé}} | ||
+ | * Commentaires : Une variable d'environnement est un objet nommé qui contient un nom et une valeur | ||
+ | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-) | ||
+ | * Suivi : | ||
+ | * Création par [[user>smolski]] le 27/09/2012 | ||
+ | * mis à jour par [[user>greenmerlin]] le 02/11/2016 | ||
+ | * Testé par [[user>greenmerlin]] le 02/11/2016 | ||
+ | * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?id=5936 |C'est ici]] | ||
===== Préalable ===== | ===== Préalable ===== | ||
Ligne 16: | Ligne 26: | ||
Par exemple, si Robert veut autoriser d'autres adultes que lui à utiliser son hachoir, il peut faire que le programme demande à l'utilisateur quel âge il a ; la réponse est enregistrée dans la variable age ; ensuite, le programme va examiner le contenu de cette variable. Si age >= 18, alors le hachoir peut se mettre en route ; mais si age < 18, le hachoir refuse de se mettre en marche. | Par exemple, si Robert veut autoriser d'autres adultes que lui à utiliser son hachoir, il peut faire que le programme demande à l'utilisateur quel âge il a ; la réponse est enregistrée dans la variable age ; ensuite, le programme va examiner le contenu de cette variable. Si age >= 18, alors le hachoir peut se mettre en route ; mais si age < 18, le hachoir refuse de se mettre en marche. | ||
===== Les variables en shell ===== | ===== Les variables en shell ===== | ||
+ | |||
+ | le paquet coreutils vous donne accès à 2 commandes pour visualiser les variables de votre système | ||
+ | |||
+ | **printenv** et **env**, ses commandes font exactement la meme chose mais l'une évolue dans un context BSD l'autre dans un context *.NIX | ||
+ | de plus la commande **set** sans options vous renverra exactement la meme chose en rajoutant les variables locales de votre shell. | ||
Avec le shell ''bash'', pour utiliser la valeur associée à une variable, on fait précéder le nom de l'étiquette de cette variable par le caractère ''$''. \\ | Avec le shell ''bash'', pour utiliser la valeur associée à une variable, on fait précéder le nom de l'étiquette de cette variable par le caractère ''$''. \\ | ||
Ligne 22: | Ligne 37: | ||
echo $HOME</code> | echo $HOME</code> | ||
- | La commande ''echo'' va afficher le nom du répertoire personnel de l'utilisateur, valeur qui avait été associé à la variable ''HOME'' au moment de son identification sur le système. | + | La commande ''echo'' va afficher le nom du répertoire personnel de l'utilisateur, valeur qui avait été associée à la variable ''HOME'' au moment de son identification sur le système. |
===== Les noms de variables ===== | ===== Les noms de variables ===== | ||
Ligne 49: | Ligne 64: | ||
- pour définir le contenu d'une variable, on écrit simplement son nom, sans le signe $ | - pour définir le contenu d'une variable, on écrit simplement son nom, sans le signe $ | ||
- tandis que pour utiliser le contenu d'une variable, on fait précéder son nom du signe $ | - tandis que pour utiliser le contenu d'une variable, on fait précéder son nom du signe $ | ||
+ | - | ||
+ | Si vous voulez que cette variable <code>$foo</code> soit interprétée par des processus enfants de votre shell (donc lancés depuis lui) il faudra "exporter cette variable. | ||
+ | exemple : | ||
+ | <code bash> | ||
+ | $ foo=bar | ||
+ | $ set | grep foo | ||
+ | foo=bar | ||
+ | $ env | grep foo | ||
+ | $ export foo=bar | ||
+ | $ set | grep foo | ||
+ | foo=bar | ||
+ | |||
+ | $ env | grep foo | ||
+ | foo=bar | ||
+ | </code> | ||
===== Les variables d'environnement ===== | ===== Les variables d'environnement ===== | ||
Ligne 88: | Ligne 118: | ||
se trouve bien dans votre [[:doc:programmation:shell:path|PATH]]. | se trouve bien dans votre [[:doc:programmation:shell:path|PATH]]. | ||
+ | Réponse : | ||
+ | comment le rajouter efficacement | ||
+ | <code> | ||
+ | export PATH="${PATH}:/usr/local/games/bin" | ||
+ | </code> | ||
===== Utiliser les variables dans un script ===== | ===== Utiliser les variables dans un script ===== | ||
Dans les scripts, on peut utiliser des variables définies à l'extérieur (avec setenv ou export), mais aussi définir ses variables locales propres au script. \\ | Dans les scripts, on peut utiliser des variables définies à l'extérieur (avec setenv ou export), mais aussi définir ses variables locales propres au script. \\ | ||
On affecte une valeur à une variable avec une commande de la forme : | On affecte une valeur à une variable avec une commande de la forme : | ||
- | nom-de-variable=valeur | + | nom_de_variable=valeur |
Les variables sont utilisées pour stocker des informations. | Les variables sont utilisées pour stocker des informations. | ||
Ligne 99: | Ligne 134: | ||
^ Variables ^ Résultats ^ | ^ Variables ^ Résultats ^ | ||
|$0 |Le nom de la commande (i.e. : du script) | | |$0 |Le nom de la commande (i.e. : du script) | | ||
- | |$1, $2, etc. |Le premier, deuxième, etc, argument passés au script. | | + | |$1, $2, etc. |Le premier, deuxième, etc, argument passés au script. Ce sont les paramètres positionnels.| |
- | |$* |La liste de tous les arguments passés au script. | | + | |$* |Tous les paramètres positionnels ($1, $2, etc).\\ $* et $@ : Sont remplacés par les tous les paramètres positionnels sans protection : $1 $2 ... ${n}.\\ "$*" : Est remplacé par touts les paramètres positionnels sans protection. C'est ce qui est retourné qui est protégé par les guillemets doubles, pour ne former qu'un seul mot : "$1 $2 ... ${n}".\\ "$@" : Est remplacé par tous les paramètres positionnels protégés. Ils sont chacun protégé par guillemets doubles : "$1" "$2" ... "${n}". | |
- | |$# |Le nombre d'arguments passés au script. | | + | |$@ |::: | |
+ | |$# |Le nombre d'arguments passés au script (nombre de paramètre positionnel). | | ||
|$? |Le code de retour de la dernière commande lancée. | | |$? |Le code de retour de la dernière commande lancée. | | ||
|$! |Le numéro de process de la dernière commande lancée en tâche de fond. | | |$! |Le numéro de process de la dernière commande lancée en tâche de fond. | |