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:17] Hypathie [E ) État de sortie et les tests] |
doc:programmation:shells:debuter-avec-les-scripts-shell-bash [03/06/2014 14:43] Hypathie [J ) Les fonctions] |
||
---|---|---|---|
Ligne 572: | Ligne 572: | ||
Dans les tests sur les entiers l'égalité est représentée par l'option -eq ! | Dans les tests sur les entiers l'égalité est représentée par l'option -eq ! | ||
- | ===Avec la structure conditionnelle if === | + | === Avec la structure conditionnelle if sur des valeurs affectés dans le script=== |
**Voir[[doc:programmation:shell:avancee|Fonctionnalités avancées du Shell]] en particulier : [[doc:programmation:shell:avancee#instruction-conditionnelle-if|structure conditionnelle if]] pour ce qui suit** | **Voir[[doc:programmation:shell:avancee|Fonctionnalités avancées du Shell]] en particulier : [[doc:programmation:shell:avancee#instruction-conditionnelle-if|structure conditionnelle if]] pour ce qui suit** | ||
Ligne 596: | Ligne 596: | ||
</code> | </code> | ||
- | ===composition avec les tests et valeur vide, valeur nulle=== | + | ===Composition avec les tests; valeurs (vide ou nulle) 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 637: | Ligne 637: | ||
</code> | </code> | ||
- | ===Alternatives : case=== | + | ===Alternatives : case et paramètres passés aux scripts=== |
** Attention case n'utilise pas d'expression régulière mais du "pattern matching"** | ** Attention case n'utilise pas d'expression régulière mais du "pattern matching"** | ||
Ligne 679: | Ligne 679: | ||
Vous avez tout en mains pour comprendre ceci : [[doc:programmation:shell:avancee#selecteur-case|Fonctionnalités avancées du Shell: selecteur-case]] | Vous avez tout en mains pour comprendre ceci : [[doc:programmation:shell:avancee#selecteur-case|Fonctionnalités avancées du Shell: selecteur-case]] | ||
+ | |||
===if et les paramètres passés au script === | ===if et les paramètres passés au script === | ||
Ligne 702: | Ligne 703: | ||
* 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]] | * 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]] | ||
- | + | <note tip> | |
- | **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).**\\ | + | **Avec if + $paramètre ; case ; et l'utilisation de la commande test les valeurs des variables que l'on testent dans le script sont affectées depuis l'extérieur du script. Ce sont les paramètres passés au script avant son exécution**\\ |
- | + | ||
- | **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.** | + | |
- | =====F ) Valeurs d'une variable internes ou externes à un script===== | + | |
- | + | ||
- | ====Pré-requis: utiliser la structure conditionnelle if==== | + | |
- | À 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.** | **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> | ||
- | =====G ) Déclaration nulle et modification par le script d'une valeur interne ou externe===== | + | =====F ) 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 794: | 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 911: | 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 1017: | Ligne 987: | ||
</note> | </note> | ||
- | =====J ) Les fonctions===== | + | =====I ) Les fonctions===== |