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 Les deux révisions suivantes | ||
doc:programmation:shells:debuter-avec-les-scripts-shell-bash [28/05/2014 11:03] Hypathie [Créer des paramètres de position : la commande set + argument(s)] |
doc:programmation:shells:debuter-avec-les-scripts-shell-bash [28/05/2014 15:42] Hypathie [Créer des paramètres de position : la commande set + argument(s)] |
||
---|---|---|---|
Ligne 425: | Ligne 425: | ||
Et dans ce cas, un paramètre c'est une valeur ou encore une "variable" un peu particulière, voyons ce qui fait que la valeur d'un paramètre ce n'est pas exactement la valeur d'une variable** | Et dans ce cas, un paramètre c'est une valeur ou encore une "variable" un peu particulière, voyons ce qui fait que la valeur d'un paramètre ce n'est pas exactement la valeur d'une variable** | ||
- | ====comparons "mon-script1" avec "mon-script2" :==== | + | **Observez:** |
- | + | * mon-script1 | |
- | **1) Les paramètres dont les valeurs sont déclarés avec set ne sont pas enregistrés comme les variables déclarées :** | + | |
<code bash> | <code bash> | ||
#!/bin/bash | #!/bin/bash | ||
Ligne 442: | Ligne 441: | ||
</code> | </code> | ||
- | **=> La valeur d'un paramètre a une position précise !** | + | **=> La valeur d'un paramètre de position n'est pas pointé !** |
- | + | ||
- | **=>un paramètre n'est pas une variable ; tous les paramètres de position sont ré-initialisés dès que set pose un nouvel argument tandis qu'il ne réinitialise pas une variable déjà créée.** | + | |
- | * ** De même, set-- annule tous les paramètres initialisés (et non pas la ou les variable(s)) par affectation directe ou par une structure conditionnelle).** | + | |
+ | * mon-script2 : | ||
<code bash> | <code bash> | ||
+ | #!/bin/bash | ||
#!/bin/bash | #!/bin/bash | ||
var=lettres | var=lettres | ||
set a b c | set a b c | ||
- | echo $var $1 $2 $3 | + | echo $var |
+ | echo $@ | ||
+ | echo " " | ||
set gros_pater | set gros_pater | ||
- | echo $var $1 | + | echo $var |
+ | echo $1 | ||
set -- | set -- | ||
- | echo $var $1 | + | echo $var |
+ | echo $1 | ||
</code> | </code> | ||
**Retour :** | **Retour :** | ||
<code> | <code> | ||
- | lettres a b c # valeur de var et des paramètres a b c | + | lettres |
- | lettres gros_pater # valeur de var et du paramètre gros_pater (initialiser ce nouveau paramètre à effacer les paramètres a b c mais pas la variable var | + | a b c |
- | lettres # set-- rend indéfini la ou les valeur(s) des paramètres de position précédemment initialisés | + | |
+ | lettres | ||
+ | gros_pater | ||
+ | lettres | ||
+ | |||
</code> | </code> | ||
+ | **=>un paramètre n'est pas une variable ; tous les paramètres de position sont ré-initialisés dès que set pose un nouvel argument tandis qu'il ne réinitialise pas une variable déjà créée.** | ||
+ | * ** De même, set-- annule tous les paramètres initialisés (et non pas la ou les variable(s)) par affectation directe ou par une structure conditionnelle).** | ||
<note > | <note > | ||
*Sans argument la commande set affiche TOUS les noms et TOUTES les valeurs des variables pré-définies (celles du script qui l'appelle aussi). Mais elle n'enregistre pas une valeur d'un valeur non-déclarée ! FIXME\\ | *Sans argument la commande set affiche TOUS les noms et TOUTES les valeurs des variables pré-définies (celles du script qui l'appelle aussi). Mais elle n'enregistre pas une valeur d'un valeur non-déclarée ! FIXME\\ | ||
Ligne 501: | Ligne 510: | ||
</note> | </note> | ||
- | **2) Lancez "mon-script2" (ci-dessous) successivement avec les arguments a ; puis b ; puis a b ; puis sans argument :** | + | ====Déclaration de la valeur d'une variable avec une structure conditionnelle ==== |
+ | **La valeur du paramètre d'une conditionnelle est pointée par cette conditionnelle sans sans forcément être nommé.** | ||
+ | (Lancez "mon-script" successivement sans argument, puis un, deux trois, etc. arguments.) | ||
<code> | <code> | ||
#!/bin/bash | #!/bin/bash | ||
Ligne 518: | Ligne 529: | ||
</code> | </code> | ||
- | <code user> | + | **Mais la valeur des paramètres d'une conditionnelle peut être "nommé" du nom de la variable "i" d'une boucle quiprend tour à tour la valeur de chacun des paramètres de position.** |
- | mon-script2 a | + | |
- | </code> | + | |
- | <code user> | + | <code> |
- | mon-script2 b | + | #!/bin/bash |
- | </code> | + | for i in "$@" |
+ | do | ||
+ | echo "Vous avez donné à la variable 'i' la valeur : $i." | ||
+ | |||
+ | if [ "$1" != "coucou" ] ; then | ||
+ | echo "Le premier argument doit être 'coucou'." | ||
+ | else | ||
+ | echo "OK" | ||
+ | if [ "$2" != "toi" ] ; then | ||
+ | echo "Le deuxième paramètre doit être 'toi'." | ||
+ | else | ||
+ | echo "MERCI" | ||
+ | fi | ||
+ | fi | ||
+ | done | ||
+ | echo " " #pour sauter une ligne | ||
- | <code user> | + | echo $@ |
- | mon-script2 a b | + | |
</code> | </code> | ||
- | |||
- | <code user> | ||
- | mon-script2 | ||
- | </code> | ||
- | |||
- | ====Déclaration de la valeur d'une variable par une structure conditionnelle ==== | ||
- | **Contrairement à la valeur d'une variable, la valeur d'un paramètre (créé au moyen d'une conditionnelle) est pointée par cette conditionnelle sans que celle-ci soit forcément nommée.** | ||
- | |||
=====Créer des paramètres de position : les tableaux===== | =====Créer des paramètres de position : les tableaux===== | ||
Les variables de chaque case d'un tableau, ont elles aussi une position définie par l'utilisateur, ou automatiquement lors de la création du tableau.\\ | Les variables de chaque case d'un tableau, ont elles aussi une position définie par l'utilisateur, ou automatiquement lors de la création du tableau.\\ |