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:page-man-bash-iii-les-operateurs-de-comparaison-numerique [25/05/2014 15:32] Hypathie [Bash : les opérateurs de comparaison numérique] |
doc:programmation:shells:page-man-bash-iii-les-operateurs-de-comparaison-numerique [31/05/2014 12:09] Hypathie [Opérateurs de comparaison numérique] |
||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
* Objet : suite de la série de wiki visant à maîtriser bash via les différents caractère spéciaux. | * Objet : suite de la série de wiki visant à maîtriser bash via les différents caractère spéciaux. | ||
- | * Niveau requis : FIXME {{tag>débutant}} | + | * Niveau requis : {{tag>débutant}} |
* Commentaires : //Contexte d'utilisation du sujet du tuto. // | * Commentaires : //Contexte d'utilisation du sujet du tuto. // | ||
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | ||
Ligne 33: | Ligne 33: | ||
et des caractères de comparaisons relatifs aux commandes de tests. | et des caractères de comparaisons relatifs aux commandes de tests. | ||
- | ====1) opérateurs booléens de comparaison numérique ==== | + | ====1) opérateurs booléens de comparaison de nombres==== |
^ Opérateur ^ Description ^ | ^ Opérateur ^ Description ^ | ||
- | | == | Comparaison d'un égalité | | + | | ** = ** | **initialisation d'une constante numérique** (ne pas confondre avec = de l'affectation de variable qui n'a pas d'espace autour de lui) | |
+ | | ** == ** | **Comparaison d'un égalité** | | ||
| != | Comparaison d'une différence | | | != | Comparaison d'une différence | | ||
| > | Comparaison de plus grand que | | | > | Comparaison de plus grand que | | ||
Ligne 66: | Ligne 67: | ||
</code> | </code> | ||
- | ====2) Les caractères de comparaison liés aux commandes de tests ==== | + | ====2) Opérateurs de comparaison de nombres avec la commande test ou les crochets==== |
+ | (pour comparer des nombres comme avec les booléens, mais avec la commande test ou crochets) | ||
Ligne 77: | Ligne 79: | ||
|-le |est plus petit ou égal à | | |-le |est plus petit ou égal à | | ||
- | *syntaxe : | + | **Syntaxe avec les crochets :** |
<code> | <code> | ||
if [ "$a" -eq "$b" ] | if [ "$a" -eq "$b" ] | ||
Ligne 97: | Ligne 99: | ||
fi | fi | ||
</code> | </code> | ||
- | ====3) Comparaison des syntaxes précédentes avec la syntaxe de la commande "test" ==== | + | |
+ | **Syntaxe avec la commande test:** | ||
<code> | <code> | ||
Ligne 112: | Ligne 115: | ||
</code> | </code> | ||
<code> | <code> | ||
- | text 100 -lt 99 && echo "vrai" || echo "faux" # retour : faux | + | test 100 -lt 99 && echo "vrai" || echo "faux" # retour : faux |
</code> | </code> | ||
Ligne 123: | Ligne 126: | ||
<code> | <code> | ||
[ 5 -eq 5 ]; echo $? # réponse : 0 car l'expression est vraie | [ 5 -eq 5 ]; echo $? # réponse : 0 car l'expression est vraie | ||
+ | </code> | ||
+ | |||
+ | ====Conclusion sur les tests ==== | ||
+ | **Nous avons vu qu'il était possible de faire des tests sur [[atelier:chantier:la-page-man-bash-ii-les-operateurs-lexicographiques#caracteres-de-comparaison-sur-les-chaines-de-caracteres|les chaînes de caractères]] ; sur [[atelier:chantier:la-page-man-bash-ii-les-operateurs-lexicographiques#tests-sur-les-fichiers|les fichiers]], sur [[atelier:chantier:page-man-bash-iii-les-operateurs-de-comparaison-numerique#operateurs-de-comparaison-numerique|les nombres]].**\\ | ||
+ | **Il y a deux mécanismes pour effectuer des tests, la paire de crochets et la commande test.**\\ | ||
+ | **Elle s'utilise avec les mêmes expressions de comparaison mais avec une autre syntaxe :**\\ | ||
+ | |||
+ | <note> | ||
+ | <code> | ||
+ | test expression ou bien [ expression ] | ||
+ | |||
+ | $ test -f /etc/gaga $ [ -f /etc/gaga ] | ||
+ | $ echo $? $ echo $? | ||
+ | 1 1 | ||
+ | $ $ | ||
+ | </code> | ||
+ | Dans les deux cas, le fichier /etc/gaga n'existe pas.\\ | ||
+ | (Si le fichier /etc/gaga existait, le retour serait 0.) | ||
+ | </note> | ||
+ | |||
+ | * Pour aller plus loin : les opérateurs logiques. | ||
+ | Ils s'utilisent avec les tests.\\ | ||
+ | ^ Opérateur ^ Signification ^ | ||
+ | |! | Négation | | ||
+ | |-a | ET | | ||
+ | |-o | OU | | ||
+ | |||
+ | Et dans un ordre précis :\\ | ||
+ | - ! (négation) | ||
+ | - -a (ET) | ||
+ | - -o (OU) | ||
+ | |||
+ | <note important> | ||
+ | Il doit toujours y avoir un espace autour des opérateurs !, -a et -o.\\ | ||
+ | Ne pas prendre -a (opérateur logique) pour un opérateur de test sur les fichiers.\\ | ||
+ | Ni confondre -o (opérateur logique) avec -ot (test pour savoir si un fichier1 est plus ancien qu'un fichier2.\\ | ||
+ | Il est possible de modifier la priorité d'exécution des opérateurs en utilisant des paranthèses. | ||
+ | \(........\) | ||
+ | Les parenthèses doivent être protégées par des antislashes afin de ne pas être interprétées par le shell comme étant un regroupement de commandes. | ||
+ | </note> | ||
+ | * syntaxe : | ||
+ | Le fichier "toto" n'est pas un répertoire : | ||
+ | <code> | ||
+ | [ ! -d /etc/group ] | ||
+ | echo $? | ||
+ | 0 | ||
+ | </code> | ||
+ | |||
+ | Le fichier mon-script existe et est exécutable : | ||
+ | <code> | ||
+ | [ -f mon-script -a -x mon-script ] | ||
+ | echo $? | ||
+ | 0 | ||
</code> | </code> | ||