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-iv-symboles-dans-les-calculs-mathematiques [26/02/2023 01:57] agp91 [Les opérateurs relationnels] |
doc:programmation:shells:page-man-bash-iv-symboles-dans-les-calculs-mathematiques [26/02/2023 02:25] agp91 [Les opérateurs logiques] |
||
---|---|---|---|
Ligne 208: | Ligne 208: | ||
* Tout autres valeurs (positive ou négatives), souvent **1**, sont comprise comme **vrai**. | * Tout autres valeurs (positive ou négatives), souvent **1**, sont comprise comme **vrai**. | ||
- | ... Dans bash, c'est le contraire (voir la note plus haut). | + | ... Dans bash, c'est le contraire (voir la note plus bas). |
- | Trois opérateurs logiques sont disponibles : 1 unaire et deux binaires. | + | Trois opérateurs logiques sont disponibles : 1 unaire et 2 binaires. |
<note important>Les opérateurs logiques ne doivent être confondus avec les opérateurs bit-à-bit.</note> | <note important>Les opérateurs logiques ne doivent être confondus avec les opérateurs bit-à-bit.</note> | ||
Ligne 235: | Ligne 235: | ||
</code> | </code> | ||
- | <note>L'opérateur de négation logique s'utilise uniquement avec des parenthèses : **!(//expr//)**.</note> | + | <note>L'opérateur de négation logique **!**) s'utilise uniquement avec des parenthèses : **!(//expr//)**.</note> |
Les opérations logiques peuvent se suivre : | Les opérations logiques peuvent se suivre : | ||
Ligne 249: | Ligne 249: | ||
</code> | </code> | ||
- | Les opérateurs **<nowiki>&&</nowiki>** et **<nowiki>||</nowiki>**, étudient leur opérande de droite (//expr2//) que si cela est pertinent : | + | Les opérateurs **<nowiki>&&</nowiki>** et **<nowiki>||</nowiki>**, étudient l'opérande de droite (//expr2//) que si cela est pertinent : |
<code user> | <code user> | ||
Ligne 264: | Ligne 264: | ||
</code> | </code> | ||
- | <note>Nous avons placer l'affection **a=10** entre parenthèse **(a=10)** pour la protéger contre la priorités des opérateurs.\\ | + | <note>Nous avons placé l'affection **a=10** entre parenthèses **(a=10)**, pour la protéger contre la priorité des opérateurs.\\ |
\\ | \\ | ||
- | Si non, l'opérateur **<nowiki>&&</nowiki>** étant prioritaire à l'opérateur **=**, les opérations effectués sont **<nowiki>0 && a</nowiki>**, puis **=10**, ce qui va générer une erreur. | + | Si non, l'opérateur **<nowiki>&&</nowiki>** étant prioritaire à l'opérateur d'affectation **=**, les opérations effectuées deviennent **<nowiki>0 && a</nowiki>**, puis **=10**, ce qui génère une erreur. |
\\ | \\ | ||
<code user> | <code user> | ||
Ligne 274: | Ligne 274: | ||
</code> | </code> | ||
- | Voir plus bas. | + | Voir plus bas [[doc:programmation:shells:page-man-bash-iv-symboles-dans-les-calculs-mathematiques#priorites-des-operateurs|les priorités des opérateurs]]. |
</note> | </note> | ||
- | S'il n'est pas pertinent d'étudier l'opérande de droite et qu'il existe un autre opérateur, alors les opération se poursuive. | + | S'il n'est pas pertinent d'étudier l'opérande de droite et qu'il existe d'autre opérateurs, alors les opérations se poursuives. |
<code user> | <code user> | ||
a=0 | a=0 | ||
Ligne 292: | Ligne 293: | ||
<note important> | <note important> | ||
Le opération logiques retournent une valeur booléenne.\\ | Le opération logiques retournent une valeur booléenne.\\ | ||
- | (**vrai** en cas de succès **faux** en cas d'échec).\\ | ||
\\ | \\ | ||
- | Les commandes **let** et **<nowiki>((..))</nowiki>** suivent le standard C.\\ | + | Les commandes **let** et **<nowiki>((..))</nowiki>** suivant le standard C.\\ |
Elles numérisent **faux** avec **0** et **vrai** avec une valeur **non nulle**.\\ | Elles numérisent **faux** avec **0** et **vrai** avec une valeur **non nulle**.\\ | ||
\\ | \\ | ||
Avec bash c'est l'inverse, **faux** est une valeur **non nulle** et **vrai** correspond à **0**.\\ | Avec bash c'est l'inverse, **faux** est une valeur **non nulle** et **vrai** correspond à **0**.\\ | ||
\\ | \\ | ||
- | Il en résulte que le code retour renvoyé est l'inverse du résultat des comparaisons effectuées par **let** ou **<nowiki>((..))</nowiki>** | + | Il en résulte que le code retour renvoyé est l'inverse du résultat des opérations logiques effectuées par **let** ou **<nowiki>((..))</nowiki>** |
<code user> | <code user> | ||
echo $(( !(0) )) | echo $(( !(0) )) | ||
(( !(0) )); echo $? | (( !(0) )); echo $? | ||
+ | </code><code> | ||
+ | 1 | ||
+ | 0 | ||
+ | </code> | ||
+ | </note> | ||
+ | |||
+ | ===== Les opérateurs relationnels ===== | ||
+ | |||
+ | Les opérateurs relationnels permettent la comparaison entre deux epressions numériques.\\ | ||
+ | Voir [[doc:programmation:shells:page-man-bash-iii-les-operateurs-de-comparaison-numerique#comparaison-numerique-avec|Comparaison numérique avec ((...))]] | ||
+ | |||
+ | <note important> | ||
+ | Comme avec les opérateurs logiques, le résultat des comparaisons des opérateurs relationnels retourne une valeur booléenne.\\ | ||
+ | (**vrai** en cas de succès **faux** en cas d'échec).\\ | ||
+ | \\ | ||
+ | Le code de retour renvoyé est donc contraire au résultat des comparaisons effectuées par **let** ou **<nowiki>((..))</nowiki>** | ||
+ | <code user> | ||
+ | echo $((24<42)) | ||
+ | ((24<42)); echo $? | ||
</code><code> | </code><code> | ||
1 | 1 |