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 [03/06/2014 18:56] Hypathie [Quand les valeurs sont des paramètres] |
doc:programmation:shells:script-bash-variables-arguments-parametres [04/06/2014 07:18] Hypathie [Création de variables] |
||
---|---|---|---|
Ligne 14: | Ligne 14: | ||
Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | ||
- | ===== Création de variables ===== | + | ===== Création, suppression, exportation de variables ===== |
En liens nécessaires : \\ | En liens nécessaires : \\ | ||
[[doc:programmation:shell:shell#variables-et-environnement|Le shell pour tous : "Variables et environnement"]]\\ | [[doc:programmation:shell:shell#variables-et-environnement|Le shell pour tous : "Variables et environnement"]]\\ | ||
Ligne 169: | Ligne 169: | ||
read -p "entrez votre de naissance (deux derniers chiffres): " -n 2 annee | read -p "entrez votre de naissance (deux derniers chiffres): " -n 2 annee | ||
</note> | </note> | ||
+ | ====Modification de la valeur d'une variable et protection ==== | ||
+ | ===Modification=== | ||
+ | Pour modifier la valeur d'une variable, il suffit de l'affecter d'une nouvelle valeur. | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | var1=bonjour | ||
+ | echo $var1 | ||
+ | var1=23 | ||
+ | echo $var1 | ||
+ | var1= | ||
+ | echo $var1 | ||
+ | var1=Bonjour | ||
+ | echo $var1 | ||
+ | </code> | ||
+ | |||
+ | Retour : | ||
+ | <code> | ||
+ | bonjour | ||
+ | 23 | ||
+ | |||
+ | Bonjour | ||
+ | </code> | ||
+ | ===proctection : redonly === | ||
+ | On protège une variable avec la commande readonly. La variable devient alors "une variable en lecture seule". Cela lui donne la caractéristique d'être figée : on ne peut plus alors, au cours du même script, réaffectée par une nouvelle valeur une même variable, y compris si cette variable a été déclarée vide. | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | var1=toto | ||
+ | var2= | ||
+ | echo "$var1 $var2" | ||
+ | readonly var1 var2 | ||
+ | var1=titi | ||
+ | var2=titi | ||
+ | unset var1 var2 | ||
+ | </code> | ||
+ | Retour : | ||
+ | |||
+ | <code> | ||
+ | toto | ||
+ | ligne6: var1 : variable en lecture seule | ||
+ | ligne7: var2 : variable en lecture seule | ||
+ | ligne 8 : unset: var1 : « unset » impossible : variable est en lecture seule | ||
+ | ligne 8 : unset: var2 : « unset » impossible : variable est en lecture seule | ||
+ | </code> | ||
+ | |||
+ | ====Suppression de variable : unset==== | ||
+ | Soit le script "essai.sh" : passons à ce script l'argument "vous" | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | var1=coucou | ||
+ | var2=$1 | ||
+ | echo "$var1 $var2" | ||
+ | unset var2 | ||
+ | echo "$var1 $var2" | ||
+ | var1=$1 | ||
+ | var2=vous | ||
+ | echo "$var1 $var2" | ||
+ | unset var2 | ||
+ | echo "$var1 $var2" | ||
+ | </code> | ||
+ | |||
+ | Retour : | ||
+ | |||
+ | <code> | ||
+ | #!/bin/bash | ||
+ | var1=yep | ||
+ | var2=coucou | ||
+ | echo "$var1 $var2" | ||
+ | unset var2 | ||
+ | echo "$var1 $var2" | ||
+ | echo " " | ||
+ | echo "mais pour un paramètre :" | ||
+ | echo " " | ||
+ | var1=yep | ||
+ | var2=coucou | ||
+ | var3=$1 | ||
+ | echo "$var1 $var2 $var3" | ||
+ | unset var2 var3 | ||
+ | echo "$var1 $var2 $var3" | ||
+ | var2= | ||
+ | var3=$1 | ||
+ | echo "$var1 $var2 $var3" | ||
+ | </code> | ||
+ | Retour : | ||
+ | |||
+ | <code bash> | ||
+ | yep coucou | ||
+ | yep | ||
+ | |||
+ | mais pour un paramètre : | ||
+ | |||
+ | yep coucou vous | ||
+ | yep | ||
+ | yep vous | ||
+ | </code> | ||
=====Quand les valeurs sont des paramètres ===== | =====Quand les valeurs sont des paramètres ===== | ||
Ligne 250: | Ligne 345: | ||
</code> | </code> | ||
- | * **Mais avec la commande set qui fixe des paramètres de position:** | + | * **Mais avec la commande set qui modifie provisoirement les paramètres :** |
+ | Pour plus de détails sur la commande set voir : [[atelier:chantier:script-bash-detail-sur-les-parametres-et-les-boucles?&#syntaxe-de-set]] | ||
<code bash> | <code bash> | ||
#!/bin/bash | #!/bin/bash | ||
Ligne 297: | Ligne 393: | ||
</code> | </code> | ||
- | ====Récupérer la longueur d'une valeur de variable ==== | + | =====Récupérer la longueur d'une valeur de variable===== |
* **Pour obtenir la longueur d'une chaîne stockée dans une variable, on écrit ${#VAR}.** | * **Pour obtenir la longueur d'une chaîne stockée dans une variable, on écrit ${#VAR}.** | ||
Ligne 311: | Ligne 407: | ||
FIXME | FIXME | ||
- | ====Substitutions de commande ==== | + | |
+ | |||
+ | =====Substitutions de commande===== | ||
Permet de se servir de la sortie d'une commande dans un autre contexte pour ; | Permet de se servir de la sortie d'une commande dans un autre contexte pour ; | ||
Ligne 360: | Ligne 458: | ||
echo $* | echo $* | ||
</code> | </code> | ||
+ | |||
+ | =====Typologie des variables ===== | ||
+ | Comme nous l'avons vu on peut affecter une variable par différents types de valeurs ; des chaînes de caractères, des nombres, des valeurs d'autres variables, des substitutions de commandes.\\ | ||
+ | On dit pour cela quand bash les variables ne sont pas typées.\\ | ||
+ | Mais il peut être intéressant de typer une variable. Pour ce faire, il faut utiliser des commandes internes à bash qui permettent de déclarer une variable typée.\\ |