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:debuter-avec-les-scripts-shell-bash [03/06/2014 14:26] Hypathie [E ) État de sortie et les tests] |
doc:programmation:shells:debuter-avec-les-scripts-shell-bash [03/06/2014 14:58] Hypathie [G ) Déclarer des paramètres de position : set] |
||
---|---|---|---|
Ligne 596: | Ligne 596: | ||
</code> | </code> | ||
- | ===Composition avec les tests; valeurs (vide ou nulle) déclarées dans le script === | + | ===Composition avec les tests; valeurs (vides ou nulles) déclarées dans le script === |
De même que la composition de commandes vu plus haut, on se sert de la composition avec les tests. Et oui les doubles crochets et la commande test sont des commandes ! LOL | De même que la composition de commandes vu plus haut, on se sert de la composition avec les tests. Et oui les doubles crochets et la commande test sont des commandes ! LOL | ||
Ligne 708: | Ligne 708: | ||
**Mais pour modifier la valeur d'une variable par un script (que le script appelle une valeur extérieure**; chaîne de caractère donnée par le terminale, récupération du résultat d'une commande, contenu d'un fichier, etc. **ou que cette variable soit affectée dans le script lui-même) on utilise les boucles.** | **Mais pour modifier la valeur d'une variable par un script (que le script appelle une valeur extérieure**; chaîne de caractère donnée par le terminale, récupération du résultat d'une commande, contenu d'un fichier, etc. **ou que cette variable soit affectée dans le script lui-même) on utilise les boucles.** | ||
</note> | </note> | ||
- | =====F ) Valeurs d'une variable internes ou externes à un script===== | ||
- | ====Pré-requis: utiliser la structure conditionnelle if==== | + | =====F ) Déclaration nulle et modification par le script d'une valeur interne ou externe===== |
- | À savoir : | + | |
- | * [[atelier:chantier:la-page-man-bash-ii-les-operateurs-lexicographiques|Opérateurs lexicographiques]] | + | |
- | * [[atelier:chantier:page-man-bash-iii-les-operateurs-de-comparaison-numerique|les opérateurs de comparaison numérique]] | + | |
- | ====Exemples :==== | + | |
- | **La valeur (contenu) de la variable1 (var1) et de la variable2 (var2) peuvent être les arguments passés à un script. | + | |
- | Un script peut opérer un test sur les chaînes de caractères passées au script depuis le terminal.** | + | |
- | (Lancez "mon-script" successivement sans argument, puis un, deux trois, etc. arguments.) | + | |
- | <code> | + | |
- | #!/bin/bash | + | |
- | var1=$1 | + | |
- | var2=$2 | + | |
- | echo $1 | + | |
- | echo $2 | + | |
- | if [ $# == 1 ] ; then | + | |
- | echo "ERREUR: vous avez entré $@, mais il faut deux arguments !" | + | |
- | elif [ $# == 2 ] ; then | + | |
- | echo "Les deux arguments que vous avez entré sont $1 et $2" | + | |
- | elif [ $# == 0 ] ; then | + | |
- | echo "ERREUR: vous n'avez pas entré d'arguments, il en faut deux !" | + | |
- | fi | + | |
- | </code> | + | |
- | + | ||
- | **Les chaînes testées par un script peuvent être aussi le contenu d'un fichier.**\\ | + | |
- | + | ||
- | * Voir ce script : [[http://www.quennec.fr/linux/programmation-shell-sous-linux/les-bases-de-la-programmation-shell/ex%C3%A9cution-de-tests/la-5]] | + | |
- | + | ||
- | **Dans ces deux cas les valeurs des variables que l'on testent, sont choisies depuis l'extérieur du script (le script est un processus fils du shell).**\\ | + | |
- | + | ||
- | **Mais pour modifier la valeur d'une variable par un script (que le script appelle une valeur extérieure**; chaîne de caractère donnée par le terminale, récupération du résultat d'une commande, contenu d'un fichier, etc. **ou que cette variable soit affectée dans le script lui-même) on utilise les boucles.** | + | |
- | + | ||
- | =====G ) Déclaration nulle et modification par le script d'une valeur interne ou externe===== | + | |
**Pré-requis : utiliser les structures de contrôle** | **Pré-requis : utiliser les structures de contrôle** | ||
Voir : | Voir : | ||
Ligne 796: | Ligne 764: | ||
</code> | </code> | ||
- | =====H ) Déclarer des paramètres de position : set===== | + | =====G ) Déclarer des paramètres de position : set===== |
==== syntaxe de set==== | ==== syntaxe de set==== | ||
À savoir : variables de substitution prédéfinies [[atelier:chantier:bash-les-differents-caracteres-speciaux?&#variables-de-substitution-predefinies-principalement-dans-les-scripts]] | À savoir : variables de substitution prédéfinies [[atelier:chantier:bash-les-differents-caracteres-speciaux?&#variables-de-substitution-predefinies-principalement-dans-les-scripts]] | ||
Ligne 913: | Ligne 881: | ||
</code> | </code> | ||
- | =====I ) Supprimer les paramètres de position===== | + | ====H ) Supprimer les paramètres de position==== |
- | ====Exemple==== | + | ===Exemple=== |
**même script que ci-dessus mais on dé-commente set - - (on enlève # ligne 5) :** | **même script que ci-dessus mais on dé-commente set - - (on enlève # ligne 5) :** | ||
Ligne 1018: | Ligne 986: | ||
Voir le tableau des options ici: http://abs.traduc.org/abs-5.3-fr/ch30.html#optionsref | Voir le tableau des options ici: http://abs.traduc.org/abs-5.3-fr/ch30.html#optionsref | ||
</note> | </note> | ||
+ | =====H) Les tableaux ===== | ||
+ | **Voir : [[atelier:chantier:page-man-bash-v-les-tableaux|shell bash : les tableaux]] | ||
- | =====J ) Les fonctions===== | + | * un rappel : |
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | tab=( rouge vert bleu) | ||
+ | echo ${tab[1]} | ||
+ | echo ${tab[@]} | ||
+ | |||
+ | tab[1]="orange" | ||
+ | echo ${tab[1]} | ||
+ | echo ${tab[@]} | ||
+ | |||
+ | echo $tab # $tab est un équivalment de $tab0 : il affichera le première élément | ||
+ | |||
+ | echo ${tab[@]} # affiche tous les éléments de même ${tab[*]} | ||
+ | echo ${#tab[@]} # pour avoir la longueur (nombres d'éléments dans le tableau): ${tab[@]} -1 | ||
+ | (moins un car on commence à zéro! | ||
+ | tab[8]="vert" # nlle affectation sur tab[8] | ||
+ | echo ${!tab[@]} # ! avoir la liste des indices du tableau | ||
+ | echo ${tab[@]} | ||
+ | |||
+ | for i in ${!tab[*]} ; do | ||
+ | echo $i : ${tab[$i]} | ||
+ | done | ||
+ | </code> | ||
+ | =====I ) Les fonctions===== | ||