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 08:42] Hypathie [D ) Les tests] |
doc:programmation:shells:debuter-avec-les-scripts-shell-bash [03/06/2014 09:24] Hypathie [D ) Les tests] |
||
---|---|---|---|
Ligne 434: | Ligne 434: | ||
===declare=== | ===declare=== | ||
===let=== | ===let=== | ||
- | =====D ) Les tests ==== | + | =====D ) Code de retour et les tests===== |
- | ====À savoir :==== | + | ====1) le code de retour et la commande exit ==== |
+ | |||
+ | |||
+ | ====2 ) les tests ==== | ||
+ | ===À savoir :=== | ||
+ | * **[[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** | ||
* **[[atelier:chantier:la-page-man-bash-ii-les-operateurs-lexicographiques|les opérateurs lexicographiques]] et leur syntaxe** | * **[[atelier:chantier:la-page-man-bash-ii-les-operateurs-lexicographiques|les opérateurs lexicographiques]] et leur syntaxe** | ||
- | * **[[atelier:chantier:page-man-bash-iii-les-operateurs-de-comparaison-numerique|les opérateurs de comparaison numérique et leur syntaxe]] | + | * **[[atelier:chantier:page-man-bash-iii-les-operateurs-de-comparaison-numerique|les opérateurs de comparaison numérique et leur syntaxe]]** |
* ** La commande test ou les crochets :[[atelier:chantier:page-man-bash-iii-les-operateurs-de-comparaison-numerique#conclusion-sur-les-operateurs-lexicographiques-et-les-operateurs-de-comparaison-numerique]]** | * ** La commande test ou les crochets :[[atelier:chantier:page-man-bash-iii-les-operateurs-de-comparaison-numerique#conclusion-sur-les-operateurs-lexicographiques-et-les-operateurs-de-comparaison-numerique]]** | ||
- | * **Attention au singe =** | + | * **Attention au signe =** |
- | Ne pas confondre le signe = de l'affectation d'une variable par une valeur (voir ci-dessus [[atelier:chantier:debuter-avec-les-scripts-shell-bash#affectation-directe|affectation directe]]) et l'opérateur de correspondance = (ou ==) utilisé dans les tests.\\ | + | Ne pas confondre le signe = de l'affectation d'une variable par une valeur (voir ci-dessus [[atelier:chantier:debuter-avec-les-scripts-shell-bash#affectation-directe|affectation directe]]) et l'opérateur de correspondance = (ou == ) utilisé dans les tests.\\ |
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 ! | ||
<code bash> | <code bash> | ||
Ligne 462: | Ligne 467: | ||
echo "les longueurs sont de : ${#var1} et de : ${#var2}" | echo "les longueurs sont de : ${#var1} et de : ${#var2}" | ||
</code> | </code> | ||
+ | |||
===composition avec les tests et valeur vide, valeur nulle=== | ===composition avec les tests et valeur vide, valeur nulle=== | ||
- | 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 | ||
* séquentielle : cmd1 ; cmd2 | * séquentielle : cmd1 ; cmd2 | ||
Ligne 469: | Ligne 476: | ||
* sur erreur (ou) : cmd1 || cmd2 | * sur erreur (ou) : cmd1 || cmd2 | ||
* sur succès (et) : cmd1 && cmd2 | * sur succès (et) : cmd1 && cmd2 | ||
+ | |||
+ | * rappel des options des commandes de test : | ||
+ | - -z $chaine : teste si la variable ne contient rien | ||
+ | - -n $chaine : teste si la variable contient quelque-chose | ||
<code bash> | <code bash> | ||
Ligne 478: | Ligne 489: | ||
var2bis=" " | var2bis=" " | ||
- | [ ${var1} ] && echo "$var1" | + | [ ${var1} ] && echo "$var1" # => ma_variable |
- | [ -n ${var1} ] && echo "$var1" | + | [ -n ${var1} ] && echo "$var1" # => ma_variable |
- | [ -n $var1 ] && echo "$var1" | + | [ -n $var1 ] && echo "$var1" # => ma_variable |
#ou encore : | #ou encore : | ||
- | test $var1 && echo "ok" | + | test $var1 && echo "ok" # => ok |
- | test -n $var1 && echo "ok var1 contient quelque-chose" | + | test -n $var1 && echo "ok var1 contient quelque-chose" # => ok var1 contient quelque-chose |
- | test -z $var1 || echo "NON: var1 ne contient pas rien" | + | test -z $var1 || echo "NON: var1 ne contient pas rien" # => NON: var1 ne contient pas rien |
echo " " | echo " " | ||
- | [ -z $var2 ] && echo "var2: ${#var2} a une valeur vide : ne contient rien" | + | [ -z $var2 ] && echo "var2: ${#var2} a une valeur vide : ne contient rien" # => var2: 0 a une valeur vide : ne contient rien |
- | [ -n $var2 ] && echo "var2: une valeur vide contient 0 : du vide !" | + | [ -n $var2 ] && echo "var2: une valeur vide contient 0 : du vide !" # => var2: une valeur vide contient 0 : du vide ! |
- | [ -z $var2bis ] && echo "var2bis: comme var2" | + | [ -z $var2bis ] && echo "var2bis: comme var2" # => var2bis: comme var2 |
- | [ -n $var2bis ] && echo "var2bis: comme var2" | + | [ -n $var2bis ] && echo "var2bis: comme var2" # => var2bis: comme var2 |
echo " " | echo " " | ||
- | [ -n $var3 ] && echo "ET avec -n" | + | [ -n $var3 ] && echo "ET avec -n: une variable nulle contient aussi du vide" # => ET avec -n: une variable nulle contient aussi du vide |
- | [ -n $var3 ] || echo "OU avec -n" | + | [ -n $var3 ] || echo "OU avec -n" # PAS DE RETOUR puisque la première commande a renvoyé le code de retour 0. |
- | [ -z $var3 ] || echo " OU avec -z" | + | [ -z $var3 ] && echo " OU avec -z une variable nulle contient aussi du vide" # => OU avec -z une variable nulle contient aussi du vide |
+ | [ -z $var3 ] || echo " OU avec -z" # PAS DE RETOUR puisque la première commande a renvoyé le code de retour 0. | ||
</code> | </code> | ||
- | ====utiliser le code de retour : exit==== | + | |