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 Prochaine révision Les deux révisions suivantes | ||
doc:programmation:shells:script-bash-variables-arguments-parametres [07/07/2014 17:03] Hypathie [Création, suppression, exportation de variables] |
doc:programmation:shells:script-bash-variables-arguments-parametres [08/07/2014 20:13] Hypathie [Quand les valeurs sont des paramètres] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ======script bash : variables, arguments, paramètres ====== | + | ======Script bash : variables, arguments, paramètres ====== |
* Niveau requis : {{tag>débutant}} | * Niveau requis : {{tag>débutant}} | ||
Ligne 35: | Ligne 35: | ||
==== Affectation directe : ==== | ==== Affectation directe : ==== | ||
- | * La déclaration d'une variable se fait lors de son affectation, c'est-à-dire lorsqu'on assigne au nom de la variable une valeur au moyen du caractère = (sans espace avant et après). | + | La déclaration d'une variable se fait lors de son affectation, c'est-à-dire lorsqu'on assigne au nom de la variable une valeur au moyen du caractère = (sans espace avant et après). |
<code bash> | <code bash> | ||
Ligne 41: | Ligne 41: | ||
NomDelaVariable=ValeurDeLaVariable | NomDelaVariable=ValeurDeLaVariable | ||
</code> | </code> | ||
- | => La valeur "ValeurDeLaVariable" a été mémorisée. | + | >La valeur "ValeurDeLaVariable" a été mémorisée. |
- | * Pour "utiliser" une variable, on se sert de sa valeur : il faut donc appeler sa valeur et cela se fait avec le caractère spécial $ accolé au nom de la variable : | + | ===$nom-de-la-variable=== |
+ | Pour "utiliser" une variable, on se sert de sa valeur : il faut donc appeler sa valeur et cela se fait avec le caractère spécial $ accolé au nom de la variable : | ||
<code bash> | <code bash> | ||
Ligne 51: | Ligne 52: | ||
ls -la ~/$nx_fichier | ls -la ~/$nx_fichier | ||
</code> | </code> | ||
+ | >Les programmes (ou commandes) "touch" et "ls" ont utilisé la valeur de | ||
+ | >la fonction nommée "nx_fichier", d'une valeur qui correspond à la chaîne | ||
+ | >de caractères "les_fonctions". | ||
- | => Les programmes (ou commandes) "touch" et "ls" ont utilisé la valeur de la fonction nommée "nx_fichier", d'une valeur qui correspond à la chaîne de caractères "les_fonctions". | + | ===Une variable n'est pas typée=== |
- | + | La valeur d'une variable peut être un nombre, un ou plusieurs caractères, du texte espacé, une commande, la valeur d'une variable. | |
- | * Exemple où la valeur d'une variable est un nombre, un ou plusieurs caractères, du texte espacé, ou une variable.\\ | + | |
<code bash> | <code bash> | ||
Ligne 77: | Ligne 80: | ||
</code> | </code> | ||
- | * On peut déclarer plusieurs variables sur une même ligne, il suffit pour cela de mettre un espace entre chacune : | + | ===Déclaration de plusieurs variables sur une ligne=== |
+ | On peut déclarer plusieurs variables sur une même ligne, il suffit pour cela de mettre un espace entre chacune : | ||
<code bash> | <code bash> | ||
#!/bin/bash | #!/bin/bash | ||
Ligne 142: | Ligne 146: | ||
read -p "entrez votre nom et prénom: " nom prenom | read -p "entrez votre nom et prénom: " nom prenom | ||
</code> | </code> | ||
- | retour: | ||
<code> | <code> | ||
entrez votre nom et prénom: | entrez votre nom et prénom: | ||
</code> | </code> | ||
- | On entre par exemple debian facile, puis on peut récupérer la valeur de chacune des variables "nom" et "prenom" | + | >On entre par exemple debian facile, puis on peut récupérer la valeur de chacune des |
+ | >variables "nom" et "prenom". | ||
<code user> | <code user> | ||
echo $prenom $nom | echo $prenom $nom | ||
</code> | </code> | ||
- | retour : | ||
<code> | <code> | ||
facile debian | facile debian | ||
Ligne 158: | Ligne 161: | ||
Mais dans un script c'est plus rapide ! 8-) | Mais dans un script c'est plus rapide ! 8-) | ||
- | * Remarque : | + | * read et variable non-déclarée |
- | Ci-dessous, on ne met pas le "nom" de la variable, parce qu'on ne cherche pas à appeler la valeur de cette variable mais à permettre au programme de se poursuivre.\\ | + | |
- | Quand on entre dans le terminal la réponse attendu par "read", le retour de la commande et zéro, donc elle est considérée comme exécutée, et le shell passe à l'exécution de la commande suivante. | + | |
<code bash> | <code bash> | ||
Ligne 168: | Ligne 169: | ||
</code> | </code> | ||
+ | >Ci-dessus, on n'a pas mis le "nom" de la variable, parce qu'on ne cherchera pas | ||
+ | >à utiliser la valeur de cette variable. Cela permet au programme de se poursuivre. | ||
+ | >Quand on entre dans le terminal la réponse attendu par "read", le retour de la | ||
+ | >commande est zéro, donc elle est considérée comme exécutée, et le shell passe à | ||
+ | >l'exécution de la commande suivante. | ||
<note> | <note> | ||
Les options de read les plus intéressantes. | Les options de read les plus intéressantes. | ||
Ligne 274: | Ligne 280: | ||
==== Exportation de la valeur d'une variable==== | ==== Exportation de la valeur d'une variable==== | ||
- | + | === Définition === | |
- | Exporter la valeur d'une variable signifie que l'on envoie à un processus fils, la valeur d'une variable d'un processus père. | + | Exporter la valeur d'une variable signifie que l'on envoie à un processus fils, la valeur d'une variable depuis un processus père. |
<note> | <note> | ||
Ligne 283: | Ligne 289: | ||
</note> | </note> | ||
- | * On peut exporter depuis le terminal, une valeur pour remplacer provisoirement une variable d'un script. | + | === Exemple === |
+ | On peut exporter depuis le terminal, une valeur pour remplacer provisoirement une variable d'un script. | ||
<code user> | <code user> | ||
Coucou="Bonjour" | Coucou="Bonjour" | ||
Ligne 312: | Ligne 319: | ||
>Mais une fois le terminal réinitialisé, si on lance ./test.sh, ce script est le | >Mais une fois le terminal réinitialisé, si on lance ./test.sh, ce script est le | ||
>processus fils de ce "nouveau" processus père (= le nouveau terminal) qui n'a plus | >processus fils de ce "nouveau" processus père (= le nouveau terminal) qui n'a plus | ||
- | > en mémoire la valeur "Bonjour" pour la variable vide "Coucou". | + | > en mémoire la valeur "Bonjour" pour la variable nulle "Coucou" du script. |
>Et dans ce cas : | >Et dans ce cas : | ||
<code user> | <code user> | ||
Ligne 361: | Ligne 368: | ||
echo "tous les paramètres $@" | echo "tous les paramètres $@" | ||
</code> | </code> | ||
- | ET | + | |
<code user> | <code user> | ||
./essai.sh a b c | ./essai.sh a b c | ||
</code> | </code> | ||
- | Retour: | ||
<code> | <code> | ||
Bonjour # on peut récupérer une valeur (ou des valeurs) déclarée(s) et les paramètres de position | Bonjour # on peut récupérer une valeur (ou des valeurs) déclarée(s) et les paramètres de position | ||
Ligne 385: | Ligne 391: | ||
echo $# | echo $# | ||
</code> | </code> | ||
- | ET | + | |
<code user> | <code user> | ||
./essai.sh bonjour à tous | ./essai.sh bonjour à tous | ||
</code> | </code> | ||
- | retour : | ||
<code> | <code> | ||
Ligne 406: | Ligne 411: | ||
echo $# | echo $# | ||
</code> | </code> | ||
- | ET | + | |
<code user> | <code user> | ||
./essai.sh "bonjour à tous" | ./essai.sh "bonjour à tous" | ||
</code> | </code> | ||
- | retour : | ||
<code> | <code> | ||
Ligne 434: | Ligne 438: | ||
</code> | </code> | ||
- | Retour : | ||
<code > | <code > | ||
bonjour à tous | bonjour à tous | ||
Ligne 442: | Ligne 445: | ||
</code> | </code> | ||
- | OU ENCORE : | + | * Ou encore : |
<code> | <code> | ||
Ligne 456: | Ligne 459: | ||
./essai.sh | ./essai.sh | ||
</code> | </code> | ||
- | |||
- | Retour : | ||
<code > | <code > |