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 [10/07/2014 12:22] Hypathie [Création, suppression, exportation de variables] |
doc:programmation:shells:script-bash-variables-arguments-parametres [21/10/2015 19:20] milou [Script bash : variables, arguments, paramètres] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
======Script bash : variables, arguments, paramètres ====== | ======Script bash : variables, arguments, paramètres ====== | ||
- | * Niveau requis : {{tag>débutant}} | + | * Objet : Script bash : variables, arguments, paramètres |
+ | * Niveau requis : {{tag>débutant avisé}} | ||
+ | * Commentaires : FIXME | ||
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | ||
- | * Suivi : {{tag>à-placer}} | + | * Suivi : |
- | * Création par [[user>Hypathie]] 18/03/2014 | + | * Création par [[user>Hypathie]] le 18/03/2014 |
- | * Testé par <Hypathie> le <Juin 2014> | + | * Testé par [[user>Hypathie]] Juin 2014 |
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=92203#p92203| Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=92203#p92203| Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
+ | Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | ||
+ | |||
+ | |||
+ | **Nota : Les autres wiki :** | ||
+ | * [[doc:programmation:shells:debuter-avec-les-scripts-shell-bash | debuter-avec-les-scripts-shell-bash]] | ||
+ | * ;-) | ||
+ | * [[doc:programmation:shells:script-bash-detail-sur-les-parametres-et-les-boucles | modification de variable et de paramètre]] | ||
+ | * [[doc:programmation:shells:script-bash-enchainement-de-commandes-et-etat-de-sortie|script-bash-enchainement-de-commandes-et-etat-de-sortie]] | ||
+ | * [[doc:programmation:shells:script-bash-etat-de-sorie-et-les-tests|script-bash-etat-de-sortie-et-les-tests]] | ||
+ | * [[doc:programmation:shells:tableaux|script-bash-les-tableaux]] | ||
+ | * [[doc:programmation:shells:fonction|script-bash-les-fonctions]] | ||
- | * [[atelier:chantier:debuter-avec-les-scripts-shell-bash]] | ||
- | * [[atelier:chantier:script-bash-detail-sur-les-parametres-et-les-boucles|script bash : modification de variable et de paramètre]] | ||
- | * [[atelier:chantier:script-bash-enchainement-de-commandes-et-etat-de-sortie|script-bash-enchainement-de-commandes-et-etat-de-sortie]] | ||
- | * [[atelier:chantier:script-bash-etat-de-sorie-et-les-tests|script-bash-etat-de-sorie-et-les-tests]] | ||
- | * [[atelier:chantier:script-bash-les-tableaux|script-bash-les-tableaux]] | ||
- | * [[atelier:chantier:script-bash-les-fonctions|script-bash-les-fonctions]] | ||
- | Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | ||
===== Création, suppression, exportation de variables ===== | ===== Création, suppression, exportation de variables ===== | ||
Ligne 22: | Ligne 28: | ||
Le nom d'une variable est un simple pointeur vers l'emplacement mémoire où sont conservées les données qu'elle contient.\\ | Le nom d'une variable est un simple pointeur vers l'emplacement mémoire où sont conservées les données qu'elle contient.\\ | ||
- | Les variables qu'on crée dans un script (ou dans le terminal) sont localisées dans ce script (ou à l'ouverture d'un terminal) c'est-à-dire qu'elles ne sont utilisables que lorsqu'on exécute son script, (ou que l'on appelle la valeur d'une variable qu'on vient de déclarer dans un terminal). Et il s'agit du script d'un utilisateur, il faut les distinguer [[atelier:chantier:la-page-man-bash-les-caracteres-speciaux#caracteres-des-variables-de-substitution-predefinies|des variables de substitution prédéfinies]] et [[atelier:chantier:la-page-man-bash-les-caracteres-speciaux#appel-de-la-valeur-des-variables-d-environnement-predefinies|des variables d'environnement prédéfinies]]. | + | Les variables qu'on crée dans un script (ou dans le terminal) sont localisées dans ce script (ou à l'ouverture d'un terminal) c'est-à-dire qu'elles ne sont utilisables que lorsqu'on exécute son script, (ou que l'on appelle la valeur d'une variable qu'on vient de déclarer dans un terminal). Et il s'agit du script d'un utilisateur, il faut les distinguer [[docs:programmation:shells:la-page-man-bash-les-caracteres-speciaux#caracteres-des-variables-de-substitution-predefinies|des variables de substitution prédéfinies]] et [[docs:programmation:shells:la-page-man-bash-les-caracteres-speciaux#appel-de-la-valeur-des-variables-d-environnement-predefinies|des variables d'environnement prédéfinies]]. |
Mais comment enregistrer une valeur en mémoire ?\\ | Mais comment enregistrer une valeur en mémoire ?\\ | ||
Ligne 29: | Ligne 35: | ||
<note> | <note> | ||
- | Avant tout prenez bien conscience que la déclaration d'une variable n'est pas confinée au script, mais qu'il est possible de déclarer une variable dans le shell courant (dans le terminal). Voir absolument : [[atelier:chantier:la-page-man-bash-les-caracteres-speciaux#details-sur-le-caractere|détail sur le caractère $]]. | + | Avant tout prenez bien conscience que la déclaration d'une variable n'est pas confinée au script, mais qu'il est possible de déclarer une variable dans le shell courant (dans le terminal). Voir absolument : [[docs:programmation:shells:la-page-man-bash-les-caracteres-speciaux#details-sur-le-caractere|détail sur le caractère $]]. |
</note> | </note> | ||
**Voyons d'abord comment créer une variable de cette manière et comment utiliser sa valeur.** ;-) | **Voyons d'abord comment créer une variable de cette manière et comment utiliser sa valeur.** ;-) | ||
Ligne 44: | Ligne 50: | ||
>La valeur ''ValeurDeLaVariable'' a été mémorisée. | >La valeur ''ValeurDeLaVariable'' a été mémorisée. | ||
- | ===$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 : | 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 script> |
#!/bin/bash | #!/bin/bash | ||
nx_fichier=les-fonctions | nx_fichier=les-fonctions | ||
Ligne 54: | Ligne 60: | ||
</code> | </code> | ||
>Les programmes (ou commandes) ''touch'' et ''ls'' ont utilisé la valeur de | >Les programmes (ou commandes) ''touch'' et ''ls'' ont utilisé la valeur de | ||
- | >la fonction nommée ''nx_fichier'', dont la valeur correspond à la chaîne | + | > |
+ | >la fonction nommée ''nx_fichier'', dont la valeur correspond à la chaîne | ||
+ | > | ||
>de caractères ''les_fonctions''. | >de caractères ''les_fonctions''. | ||
Ligne 60: | Ligne 68: | ||
La valeur d'une variable peut être un nombre, un ou plusieurs caractères, du texte espacé, une commande, la valeur d'une variable. | La valeur d'une variable peut être un nombre, un ou plusieurs caractères, du texte espacé, une commande, la valeur d'une variable. | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
var1=a | var1=a | ||
Ligne 83: | Ligne 91: | ||
===Déclaration de plusieurs variables sur une ligne=== | ===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 : | 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 script> |
#!/bin/bash | #!/bin/bash | ||
set -o posix | set -o posix | ||
Ligne 108: | Ligne 116: | ||
<note tip> | <note tip> | ||
Pour concaténer les valeurs deux variables : | Pour concaténer les valeurs deux variables : | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
var1=lala | var1=lala | ||
Ligne 122: | Ligne 130: | ||
* Syntaxe : | * Syntaxe : | ||
<code> | <code> | ||
- | read nom-de-la-variable | + | read nom_de_la_variable |
</code> | </code> | ||
*La valeur est enregistrée par l'utilisateur sur l'entrée standard (i.e. ce qu'on écrit à l'invite de commande).\\ | *La valeur est enregistrée par l'utilisateur sur l'entrée standard (i.e. ce qu'on écrit à l'invite de commande).\\ | ||
Ligne 128: | Ligne 136: | ||
Par exemple dans un script : | Par exemple dans un script : | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
echo "Bonjour : qui êtes-vous ?" | echo "Bonjour : qui êtes-vous ?" | ||
Ligne 140: | Ligne 148: | ||
* L'option -p permet d'insérer un message avant l'attente de la valeur que l'utilisateur doit entrer. | * L'option -p permet d'insérer un message avant l'attente de la valeur que l'utilisateur doit entrer. | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
read -p "entrez votre prénom: " prenom | read -p "entrez votre prénom: " prenom | ||
Ligne 146: | Ligne 154: | ||
</code> | </code> | ||
>Ici ''prenom'' est le nom de la variable, et sa valeur est entrée par l'utilisateur depuis le terminal. | >Ici ''prenom'' est le nom de la variable, et sa valeur est entrée par l'utilisateur depuis le terminal. | ||
+ | > | ||
>Là aussi ces deux commandes peuvent être entrées dans le terminal. | >Là aussi ces deux commandes peuvent être entrées dans le terminal. | ||
Ligne 152: | Ligne 161: | ||
read -p "entrez votre nom et prénom: " nom prenom | read -p "entrez votre nom et prénom: " nom prenom | ||
</code> | </code> | ||
- | <code> | + | <file config retour de la commande> |
entrez votre nom et prénom: | entrez votre nom et prénom: | ||
- | </code> | + | </file> |
>On entre par exemple les deux chaînes de caractères, ''debian'' et ''facile'', puis on peut récupérer la valeur de chacune des deux variables ''nom'' et ''prenom''. | >On entre par exemple les deux chaînes de caractères, ''debian'' et ''facile'', puis on peut récupérer la valeur de chacune des deux variables ''nom'' et ''prenom''. | ||
Ligne 161: | Ligne 170: | ||
echo $prenom $nom | echo $prenom $nom | ||
</code> | </code> | ||
- | <code> | + | <file config retour de la commande> |
facile debian | facile debian | ||
- | </code> | + | </file> |
Mais dans un script c'est plus rapide ! 8-) | Mais dans un script c'est plus rapide ! 8-) | ||
* read et variable non-déclarée | * read et variable non-déclarée | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
read -p "entrez votre nom d'utilisateur: " | read -p "entrez votre nom d'utilisateur: " | ||
Ligne 182: | Ligne 191: | ||
Quelques options utiles de la commande ''read''. | Quelques options utiles de la commande ''read''. | ||
* ''-p'' : afficher un message | * ''-p'' : afficher un message | ||
+ | |||
* ''-n'' : limiter le nombre de caractères | * ''-n'' : limiter le nombre de caractères | ||
+ | |||
* ''-t'' : limiter le temps autorisé pour saisir un message | * ''-t'' : limiter le temps autorisé pour saisir un message | ||
+ | |||
* ''-s'' : ne pas afficher le texte saisi | * ''-s'' : ne pas afficher le texte saisi | ||
On peut utiliser plusieurs options.\\ Par exemple: | On peut utiliser plusieurs options.\\ Par exemple: | ||
Ligne 194: | Ligne 206: | ||
Pour modifier la valeur d'une variable, il suffit de l'affecter d'une nouvelle valeur. | Pour modifier la valeur d'une variable, il suffit de l'affecter d'une nouvelle valeur. | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
var1=bonjour | var1=bonjour | ||
Ligne 216: | Ligne 228: | ||
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 variable en lecture seule, y compris si cette variable a été déclarée nulle. | 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 variable en lecture seule, y compris si cette variable a été déclarée nulle. | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
var1=toto | var1=toto | ||
Ligne 235: | Ligne 247: | ||
==== Suppression de variable : unset==== | ==== Suppression de variable : unset==== | ||
- | Soit le script "essai.sh" : passons à ce script l'argument "vous" | + | Soit le script "essai.sh" : passons à ce script l'argument ''vous'' |
- | <code bash> | + | <code bash script essai.sh> |
#!/bin/bash | #!/bin/bash | ||
var1=coucou | var1=coucou | ||
Ligne 251: | Ligne 263: | ||
</code> | </code> | ||
- | <code> | + | <code bash script essai.sh> |
#!/bin/bash | #!/bin/bash | ||
var1=yep | var1=yep | ||
Ligne 291: | Ligne 303: | ||
Un processus, c'est un programme en cours d'exécution, mais aussi son environnement d'exécution.\\ | Un processus, c'est un programme en cours d'exécution, mais aussi son environnement d'exécution.\\ | ||
Ainsi le shell qui lance un script est le processus père du script lancé. | Ainsi le shell qui lance un script est le processus père du script lancé. | ||
- | Sur la notion de processus voir [[atelier:chantier:bash-les-differents-caracteres-speciaux?&#notion-de-processus|Notion de processus]] | + | Sur la notion de processus voir [[doc:programmation:shells:bash-les-differents-caracteres-speciaux?&#notion-de-processus|Notion de processus]] |
</note> | </note> | ||
Ligne 300: | Ligne 312: | ||
</code> | </code> | ||
>On déclare la variable ''Coucou'', affectée de la valeur ''Bonjour'' depuis le terminal. | >On déclare la variable ''Coucou'', affectée de la valeur ''Bonjour'' depuis le terminal. | ||
+ | > | ||
>Le shell courant l'a enregistré. | >Le shell courant l'a enregistré. | ||
<code user> | <code user> | ||
Ligne 305: | Ligne 318: | ||
</code> | </code> | ||
>Là, on crée le fichier "test.sh" contenant la ligne : '' echo "Coucou=$Coucou" ''. | >Là, on crée le fichier "test.sh" contenant la ligne : '' echo "Coucou=$Coucou" ''. | ||
+ | > | ||
>Il contient une variable, de même nom que celle, précédemment déclarée et affectée de la valeur ''Bonjour'' depuis le terminal. | >Il contient une variable, de même nom que celle, précédemment déclarée et affectée de la valeur ''Bonjour'' depuis le terminal. | ||
<code user> | <code user> | ||
Ligne 314: | Ligne 328: | ||
</code> | </code> | ||
>On exporte la variable ''Coucou''((Il s'agit ben sûr, de celle déclarée dans le terminal au début de l'exemple)). | >On exporte la variable ''Coucou''((Il s'agit ben sûr, de celle déclarée dans le terminal au début de l'exemple)). | ||
+ | > | ||
>Attention, ce n'est jamais la __valeur__ d'une variable que l'on exporte ! | >Attention, ce n'est jamais la __valeur__ d'une variable que l'on exporte ! | ||
<code user> | <code user> | ||
./test.sh | ./test.sh | ||
</code> | </code> | ||
- | <code> | + | <file config retour de la commande> |
Coucou="Bonjour" | Coucou="Bonjour" | ||
- | </code> | + | </file> |
>Il faut que le script déclare une variable de même nom (''Coucou= '') ; qu'il récupère celle exportée depuis le terminal (''$Coucou'') ; et bien évidemment, qu'il affiche (''echo'') tout cela :( ''echo "Coucou=$Coucou" ''). | >Il faut que le script déclare une variable de même nom (''Coucou= '') ; qu'il récupère celle exportée depuis le terminal (''$Coucou'') ; et bien évidemment, qu'il affiche (''echo'') tout cela :( ''echo "Coucou=$Coucou" ''). | ||
Ligne 333: | Ligne 348: | ||
./test.sh | ./test.sh | ||
</code> | </code> | ||
- | + | <file config retour de la commande> | |
- | <code> | + | |
Coucou= | Coucou= | ||
- | </code> | + | </file> |
<note> | <note> | ||
Ligne 366: | Ligne 380: | ||
EXEMPLES : soit le script "essai.sh" | EXEMPLES : soit le script "essai.sh" | ||
- | <code bash> | + | <code bash script essai.sh> |
#!/bin/bash | #!/bin/bash | ||
var=Bonjour | var=Bonjour | ||
Ligne 382: | Ligne 396: | ||
</code> | </code> | ||
- | <code> | + | <file config retour de la commande> |
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 | ||
a | a | ||
Ligne 390: | Ligne 404: | ||
tous les paramètres a b c | tous les paramètres a b c | ||
- | </code> | + | </file> |
* Tous les arguments passés au scripts $* et $@ sont synonymes | * Tous les arguments passés au scripts $* et $@ sont synonymes | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
echo $1 | echo $1 | ||
Ligne 405: | Ligne 419: | ||
</code> | </code> | ||
- | <code> | + | <file config retour de la commande> |
bonjour | bonjour | ||
bonjour à tous | bonjour à tous | ||
bonjour à tous | bonjour à tous | ||
3 | 3 | ||
- | </code> | + | </file> |
* Là de même pour $* et $@ : | * Là de même pour $* et $@ : | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
echo $1 | echo $1 | ||
Ligne 425: | Ligne 439: | ||
</code> | </code> | ||
- | <code> | + | <file config retour de la commande> |
bonjour à tous | bonjour à tous | ||
bonjour à tous | bonjour à tous | ||
bonjour à tous | bonjour à tous | ||
1 | 1 | ||
- | </code> | + | </file> |
* Mais avec la commande set qui modifie provisoirement les paramètres : | * 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]] | + | Pour plus de détails sur la commande set voir : [[doc:programmation:shells:script-bash-detail-sur-les-parametres-et-les-boucles?&#syntaxe-de-set]] |
- | <code bash> | + | <code bash script essai.sh> |
#!/bin/bash | #!/bin/bash | ||
set "bonjour à tous" | set "bonjour à tous" | ||
Ligne 447: | Ligne 461: | ||
</code> | </code> | ||
- | <code > | + | <file config retour de la commande> |
bonjour à tous | bonjour à tous | ||
bonjour à tous | bonjour à tous | ||
bonjour à tous | bonjour à tous | ||
1 | 1 | ||
- | </code> | + | </file> |
* Ou encore : | * Ou encore : | ||
- | <code> | + | <code bash script essai.sh> |
#!/bin/bash | #!/bin/bash | ||
set bonjour à tous | set bonjour à tous | ||
Ligne 469: | Ligne 483: | ||
</code> | </code> | ||
- | <code > | + | <file config retour de la commande> |
bonjour à tous | bonjour à tous | ||
bonjour à tous | bonjour à tous | ||
Ligne 475: | Ligne 489: | ||
3 | 3 | ||
- | </code> | + | </file> |
=====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}''. |
Exemples : | Exemples : | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
var="j'aime debian-facile" | var="j'aime debian-facile" | ||
Ligne 488: | Ligne 502: | ||
</code> | </code> | ||
- | * Pour récupérer la longueur d'un paramètre de position | + | * Pour récupérer la longueur d'un paramètre de position : |
FIXME | FIXME | ||
Ligne 494: | Ligne 508: | ||
=====Substitutions de commande===== | =====Substitutions de commande===== | ||
- | ====Utilisation ==== | + | ===Utilisation === |
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 ; | ||
- affecter cette sortie à une variable ; | - affecter cette sortie à une variable ; | ||
Ligne 500: | Ligne 514: | ||
- etc. | - etc. | ||
- | ====deux syntaxes :==== | + | ===Deux syntaxes :=== |
<code> | <code> | ||
`commande` | `commande` | ||
Ligne 511: | Ligne 525: | ||
</code> | </code> | ||
- | ===$(cmd) : des exemples=== | + | ====Substitution simple : $(commande)==== |
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
dir=$(pwd) | dir=$(pwd) | ||
Ligne 521: | Ligne 535: | ||
</code> | </code> | ||
*plusieurs commandes: | *plusieurs commandes: | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
echo $(pwd ; ls) | echo $(pwd ; ls) | ||
</code> | </code> | ||
- | === $(cmd) : imbrication de commandes :=== | + | ====Imbrication de commandes : $(cmd $(cmd))==== |
<code bash> | <code bash> | ||
echo $( ls $(pwd)/Documents) | echo $( ls $(pwd)/Documents) | ||
</code> | </code> | ||
- | *avec set : | + | === Imbrication avec ''set'' === |
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
set $(pwd ; whoami) | set $(pwd ; whoami) | ||
Ligne 537: | Ligne 551: | ||
</code> | </code> | ||
Ou | Ou | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
set -- $(ls -l $(pwd)/.bashrc) | set -- $(ls -l $(pwd)/.bashrc) | ||
Ligne 549: | Ligne 563: | ||
====declare et typeset ==== | ====declare et typeset ==== | ||
- | ^ commandes ^options ^ | + | ^ commandes ^options ^ |
- | |declare/typeset |-r lecture seule | | + | |declare/typeset |''-r'' : lecture seule | |
- | |declare/typeset |-i entier | | + | |declare/typeset |''-i'' : entier | |
- | |declare/typeset |-a tableau (array) | | + | |declare/typeset |''-a'' tableau (array) | |
- | |declare/typeset |-f fonction(s) | | + | |declare/typeset |''-f'' : fonction(s) | |
- | |declare/typeset |-x export | | + | |declare/typeset |''-x'' : export | |
- | |declare/typeset |-x var=$value | | + | |declare/typeset |''-x'' : ''var=$valeur'' | |
Voir : [[http://abs.traduc.org/abs-5.1-fr/ch09s04.html|Guide avancé d'écriture des scripts Bash: 9.4. Typer des variables : declare ou typeset]] | Voir : [[http://abs.traduc.org/abs-5.1-fr/ch09s04.html|Guide avancé d'écriture des scripts Bash: 9.4. Typer des variables : declare ou typeset]] | ||
- | ===Remarques sur la commande declare -i et les calculs === | + | ===Remarques sur la commande "declare" et les calculs === |
<note important> | <note important> | ||
**Méthode non POSIX**\\ | **Méthode non POSIX**\\ | ||
- | * La valeur d'une variable peut une expression arithmétique, pour initialiser une variable de type entier on utilise l'option -i de la commande declare : declare -i nom[=expression] nom[=expression] ... | + | * La valeur d'une variable peut une expression arithmétique, pour initialiser une variable de type entier on utilise l'option ''-i'' de la commande ''declare'' :\\ ''declare -i nom[=expression] nom[=expression] ...'' |
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
declare -i x=35*2 | declare -i x=35*2 | ||
Ligne 575: | Ligne 589: | ||
</code> | </code> | ||
- | * Pour que la valeur d'une variable ne soit pas accidentellement modifier, il faut ajouter l'attribut -r. | + | * Pour que la valeur d'une variable ne soit pas accidentellement modifier, il faut ajouter l'attribut ''-r''. |
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
declare -ir a=35*2 | declare -ir a=35*2 | ||
Ligne 583: | Ligne 597: | ||
echo $(($a+$b)) | echo $(($a+$b)) | ||
</code> | </code> | ||
- | retour | + | |
<code> | <code> | ||
80 | 80 | ||
</code> | </code> | ||
- | **Méthode POSIX : Les commandes let et ( ( ... ) ) permettent de typer les variables pour effectuer des calculs sur les variables (synonyme de declare -i).** | + | **Méthode POSIX** : Les commandes ''let'' et ''<nowiki>(( ... ))</nowiki>'' permettent de typer les variables pour effectuer des calculs sur les variables (synonyme de ''declare -i''). |
</note> | </note> | ||
Ligne 595: | Ligne 609: | ||
==== Les variables typées pour les calculs : let ou (( ... )) ==== | ==== Les variables typées pour les calculs : let ou (( ... )) ==== | ||
- | **Voir : [[atelier:chantier:page-man-bash-iv-symboles-dans-les-calculs-mathematiques?&#operateurs-arithmetiques|les opérateurs arithmétiques]]** | + | Voir : [[doc:programmation:shells:page-man-bash-iv-symboles-dans-les-calculs-mathematiques?&#operateurs-arithmetiques|les opérateurs arithmétiques]] |
- | ===syntaxe=== | + | ===Syntaxe=== |
<code> | <code> | ||
let 'var = 5 + 5' | let 'var = 5 + 5' | ||
Ligne 602: | Ligne 616: | ||
$(( 5 * 3 )) | $(( 5 * 3 )) | ||
</code> | </code> | ||
- | === exemples=== | + | === Exemples=== |
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
let "a = 10" | let "a = 10" | ||
Ligne 623: | Ligne 637: | ||
echo $(( $var2 % $var1 )) | echo $(( $var2 % $var1 )) | ||
</code> | </code> | ||
- | Retour | ||
<code> | <code> | ||
12 | 12 | ||
Ligne 636: | Ligne 649: | ||
==== L'affectation arthmétique==== | ==== L'affectation arthmétique==== | ||
- | **Voir [[atelier:chantier:page-man-bash-iv-symboles-dans-les-calculs-mathematiques?&#operateurs-d-affectation-arithmetique| les opérateurs d'affectation arithmétique]]** | + | Voir [[doc:programmation:shells:page-man-bash-iv-symboles-dans-les-calculs-mathematiques?&#operateurs-d-affectation-arithmetique| les opérateurs d'affectation arithmétique]] |
- | Cela consiste à affecter à une variable le résultat d'un calcul arithmétique, par la **constante** (donc avec let) qu'on lui a donné.\\ | + | Cela consiste à affecter à une variable le résultat d'un calcul arithmétique, par la __constante__ (donc avec ''let'') qu'on lui a donné.\\ |
- | Soit une variable var de valeur x, si l'on fait **var +=2** alors la variable var sera **x + 2**.\\ | + | Soit une variable var de valeur x, si l'on fait ''var +=2'' alors la variable var sera ''x + 2''.\\ |
- | (cela permet de faire des incrémentation par autre chose que 1 : voir plus incrémentation, décrémentation de la valeur 1 .)\\ | + | |
- | Il en va de même pour les autres opérateurs.\\ | + | |
- | === Exemples === | + | >cela permet de faire des incrémentation par autre chose que 1.) |
+ | >Il en va de même pour les autres opérateurs.\\ | ||
+ | |||
+ | * Exemples | ||
<code bash> | <code bash> | ||
Ligne 661: | Ligne 675: | ||
</code> | </code> | ||
+ | ===Incrémentation, décrémentation=== | ||
- | ===incrémentation, décrémentation de la valeur 1 : ( ( var++ ) ) ; ( ( ++var ) ) ; ( ( var- - ) ), etc.=== | + | * incrémentation, décrémentation de la valeur 1 : ''<nowiki>(( var++ ))</nowiki>'' ; ''<nowiki>(( ++var ))</nowiki>'' ; ''<nowiki>(( var-- ))</nowiki>'', etc. |
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
let "var = 5" | let "var = 5" | ||
Ligne 683: | Ligne 698: | ||
* L'incrémentation se fait aussi sur une boucle ! | * L'incrémentation se fait aussi sur une boucle ! | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
i=1 # on initialise le compteur | i=1 # on initialise le compteur | ||
Ligne 691: | Ligne 706: | ||
done | done | ||
</code> | </code> | ||
- | [[atelier:chantier:script-bash-les-tableaux#se-creuser-un-peu-les-meninges|voir aussi ici]] | + | [[doc:programmation:bash:script:tableaux#se-creuser-un-peu-les-meninges|voir aussi ici]] |
* Ou encore de cette manière : | * Ou encore de cette manière : | ||
Ligne 701: | Ligne 716: | ||
====Changements de bases ==== | ====Changements de bases ==== | ||
Bash permet de changer de base (Il est par défaut en base 10)\\ | Bash permet de changer de base (Il est par défaut en base 10)\\ | ||
- | * base 8 (octal) : un chiffre précédé de **0**\\ | + | * base 8 (octal) : un chiffre n précédé de zéro : ''0n''\\ |
exemple : 02 => 2 en base 8 | exemple : 02 => 2 en base 8 | ||
- | * base 16(hexadécimal): un chiffre précédé de **0x**\\ | + | * base 16(hexadécimal): un chiffre n précédé de zéro+x : ''0xn''\\ |
exemple : 0x3 => 3 en base 16 | exemple : 0x3 => 3 en base 16 | ||
- | * autres bases : **base#nombre** | + | * autres bases : ''base#nombre'' |
* base maximale : base 64 | * base maximale : base 64 | ||
Ligne 716: | Ligne 731: | ||
=====La suite c'est ici ===== | =====La suite c'est ici ===== | ||
- | [[atelier:chantier:script-bash-detail-sur-les-parametres-et-les-boucles|script-bash-detail-sur-les-parametres]] | + | [[doc:programmation:shells:script-bash-detail-sur-les-parametres-et-les-boucles|script-bash-detail-sur-les-parametres]] |