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 17:19] Hypathie [Déclarer des paramètres de position : set] |
doc:programmation:shells:script-bash-variables-arguments-parametres [04/06/2014 06:28] Hypathie [Substitutions de commande] |
||
---|---|---|---|
Ligne 170: | Ligne 170: | ||
</note> | </note> | ||
+ | =====Quand les valeurs sont des paramètres ===== | ||
+ | ====Les paramètres de positions ==== | ||
+ | Lorsqu'on ajoute un argument au script avant son exécution, on peut alors récupérer la valeur de ce paramètre.\\ | ||
+ | |||
+ | * **Pour récupérer chaque paramètre : $1 ; $2 ; $3** etc. | ||
+ | |||
+ | * **Pour récupérer tous les paramètres : $@** | ||
+ | |||
+ | EXEMPLES : soit le script "essai.sh" | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | var=Bonjour | ||
+ | echo $var | ||
+ | echo "$1" | ||
+ | echo "$2" | ||
+ | echo "$3" | ||
+ | echo "ou le paramètre 1 est: $1, le deuxième est: $2, le troisième est : $3" | ||
+ | echo " " | ||
+ | echo "tous les paramètres $@" | ||
+ | </code> | ||
+ | ET | ||
+ | <code user> | ||
+ | ./essai.sh a b c | ||
+ | </code> | ||
+ | |||
+ | Retour: | ||
+ | <code> | ||
+ | Bonjour # on peut récupérer une valeur (ou des valeurs) déclarée(s) et les paramètres de position | ||
+ | a | ||
+ | b | ||
+ | c | ||
+ | ou le paramètre 1 est: a, le deuxième est: b, le troisième est : c | ||
+ | |||
+ | tous les paramètres a b c | ||
+ | </code> | ||
+ | |||
+ | * **Tous les arguments passés au scripts $* et $@ sont synonymes** | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | echo $1 | ||
+ | echo $* | ||
+ | echo $@ | ||
+ | echo $# | ||
+ | </code> | ||
+ | ET | ||
+ | <code user> | ||
+ | ./essai.sh bonjour à tous | ||
+ | </code> | ||
+ | retour : | ||
+ | |||
+ | <code> | ||
+ | bonjour | ||
+ | bonjour à tous | ||
+ | bonjour à tous | ||
+ | 3 | ||
+ | </code> | ||
+ | |||
+ | * **de même pour $* et $@ :** | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | echo $1 | ||
+ | echo $* | ||
+ | echo $@ | ||
+ | echo $# | ||
+ | </code> | ||
+ | ET | ||
+ | <code user> | ||
+ | ./essai.sh "bonjour à tous" | ||
+ | </code> | ||
+ | retour : | ||
+ | |||
+ | <code> | ||
+ | bonjour à tous | ||
+ | bonjour à tous | ||
+ | bonjour à tous | ||
+ | 1 | ||
+ | </code> | ||
+ | |||
+ | * **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> | ||
+ | #!/bin/bash | ||
+ | set "bonjour à tous" | ||
+ | echo $* | ||
+ | echo $@ | ||
+ | echo $1 | ||
+ | echo $# | ||
+ | </code> | ||
+ | |||
+ | <code user> | ||
+ | ./essai.sh | ||
+ | </code> | ||
+ | |||
+ | Retour : | ||
+ | <code > | ||
+ | bonjour à tous | ||
+ | bonjour à tous | ||
+ | bonjour à tous | ||
+ | 1 | ||
+ | </code> | ||
+ | |||
+ | OU ENCORE : | ||
+ | |||
+ | <code> | ||
+ | #!/bin/bash | ||
+ | set bonjour à tous | ||
+ | echo $* | ||
+ | echo $@ | ||
+ | echo $1 | ||
+ | echo $# | ||
+ | </code> | ||
+ | |||
+ | <code user> | ||
+ | ./essai.sh | ||
+ | </code> | ||
+ | |||
+ | Retour : | ||
+ | |||
+ | <code > | ||
+ | bonjour à tous | ||
+ | bonjour à tous | ||
+ | bonjour | ||
+ | 3 | ||
+ | |||
+ | </code> | ||
+ | |||
+ | =====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}.** | ||
+ | |||
+ | Exemples : | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | var="j'aime debian-facile" | ||
+ | echo ${#var} | ||
+ | </code> | ||
+ | |||
+ | * ** Pour récupérer la longueur d'un paramètre de position** | ||
+ | FIXME | ||
+ | |||
+ | |||
+ | |||
+ | =====Substitutions de commande===== | ||
+ | |||
+ | Permet de se servir de la sortie d'une commande dans un autre contexte pour ; | ||
+ | - affecter cette sortie à une variable ; | ||
+ | - utiliser cette sortie comme argument d'une autre commande | ||
+ | - etc. | ||
+ | |||
+ | Il y a deux syntaxes : | ||
+ | <code> | ||
+ | `commande` | ||
+ | </code> | ||
+ | |||
+ | OU | ||
+ | |||
+ | <code> | ||
+ | $(commande) | ||
+ | </code> | ||
+ | |||
+ | ===$(cmd) : des exemples=== | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | dir=$(pwd) | ||
+ | echo "mon répertoire est : $dir" | ||
+ | </code> | ||
+ | <code> | ||
+ | mon répertoire est : /home/hypathie | ||
+ | </code> | ||
+ | *plusieurs commandes: | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | echo $(pwd ; ls) | ||
+ | </code> | ||
+ | === $(cmd) : imbrication de commandes :=== | ||
+ | <code bash> | ||
+ | echo $( ls $(pwd)/Documents) | ||
+ | </code> | ||
+ | *avec set : | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | set $(pwd ; whoami) | ||
+ | echo "$1 : $2" | ||
+ | echo $# | ||
+ | </code> | ||
+ | Ou | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | set -- $(ls -l $(pwd)/.bashrc) | ||
+ | echo $* | ||
+ | </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.\\ |