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 [31/05/2014 19:29] Hypathie [Supprimer les paramètres de position] |
doc:programmation:shells:debuter-avec-les-scripts-shell-bash [03/06/2014 08:42] Hypathie [D ) Les tests] |
||
---|---|---|---|
Ligne 281: | Ligne 281: | ||
**Lors de l'exécution de ce script, la chaîne que vous entrerez pour répondre à la question, sera le nom d'un nouveau script que vous voulez créer.** | **Lors de l'exécution de ce script, la chaîne que vous entrerez pour répondre à la question, sera le nom d'un nouveau script que vous voulez créer.** | ||
- | =====C ) Création de variables par l'utilisateur===== | + | =====C ) Création de variables ===== |
En liens nécessaires : \\ | En liens nécessaires : \\ | ||
[[doc:programmation:shell:shell#variables-et-environnement|Le shell pour tous : "Variables et environnement"]]\\ | [[doc:programmation:shell:shell#variables-et-environnement|Le shell pour tous : "Variables et environnement"]]\\ | ||
Ligne 435: | Ligne 435: | ||
===let=== | ===let=== | ||
=====D ) Les tests ==== | =====D ) Les tests ==== | ||
+ | ====À savoir :==== | ||
+ | * **[[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]] | ||
+ | * ** 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 =** | ||
+ | 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 ! | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | var1=23 | ||
+ | var2=36 | ||
+ | |||
+ | if [ $var1 -eq $var2 ] ; then | ||
+ | echo "$var1 et $var2 sont égales" | ||
+ | else | ||
+ | echo "$var1 et $var2 ne sont pas égales" | ||
+ | fi | ||
+ | |||
+ | if [ $var1 != $var2 ] ; then | ||
+ | echo "$var1 et $var2 sont inégales" | ||
+ | fi | ||
+ | |||
+ | if [ ${#var1} = ${#var2} ] ; then | ||
+ | echo "$var1 et $var2 sont des chaînes de même longueur" | ||
+ | fi | ||
+ | echo "les longueurs sont de : ${#var1} et de : ${#var2}" | ||
+ | </code> | ||
+ | ===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 \\ | ||
+ | |||
+ | * séquentielle : cmd1 ; cmd2 | ||
+ | * parallèle : cmd1 & cmd2 | ||
+ | * sur erreur (ou) : cmd1 || cmd2 | ||
+ | * sur succès (et) : cmd1 && cmd2 | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | #var3 est nulle, non déclarée, (ou non initialisée) : sa valeur est nulle | ||
+ | #var2 est initialisée mais sans valeur : sa une valeur vide | ||
+ | var1=ma_variable | ||
+ | var2= | ||
+ | var2bis=" " | ||
+ | |||
+ | [ ${var1} ] && echo "$var1" | ||
+ | [ -n ${var1} ] && echo "$var1" | ||
+ | [ -n $var1 ] && echo "$var1" | ||
+ | #ou encore : | ||
+ | test $var1 && echo "ok" | ||
+ | test -n $var1 && echo "ok var1 contient quelque-chose" | ||
+ | test -z $var1 || echo "NON: var1 ne contient pas rien" | ||
+ | echo " " | ||
+ | |||
+ | [ -z $var2 ] && echo "var2: ${#var2} a une valeur vide : ne contient rien" | ||
+ | [ -n $var2 ] && echo "var2: une valeur vide contient 0 : du vide !" | ||
+ | [ -z $var2bis ] && echo "var2bis: comme var2" | ||
+ | [ -n $var2bis ] && echo "var2bis: comme var2" | ||
+ | echo " " | ||
+ | [ -n $var3 ] && echo "ET avec -n" | ||
+ | [ -n $var3 ] || echo "OU avec -n" | ||
+ | [ -z $var3 ] || echo " OU avec -z" | ||
+ | </code> | ||
====utiliser le code de retour : exit==== | ====utiliser le code de retour : exit==== | ||
Ligne 749: | Ligne 810: | ||
</note> | </note> | ||
- | =====Les fonctions===== | + | =====I ) Les fonctions===== |