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 [06/10/2015 21:18] milou [Tuto précédent] |
doc:programmation:shells:page-man-bash-iv-symboles-dans-les-calculs-mathematiques [24/02/2023 21:03] agp91 aut |
||
---|---|---|---|
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 : {{tag>débutant}} | + | * Niveau requis : {{tag>débutant avisé}} |
* Commentaires : scripts | * Commentaires : scripts | ||
* 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à !.]] :-) | ||
- | * Suivi : {{tag>en-chantier à-tester }} | + | * Suivi : |
- | * Création par [[user>Hypathie]] 08/04/2014 | + | * Création par [[user>Hypathie]] le 08/04/2014 |
- | * Testé par Hypathie le Avril 2014 | + | * Testé par [[user>Hypathie]] Avril 2014 |
- | * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=87499#p87499 | ici]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | + | * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=140882#p140882 | ici]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) |
* [[doc:programmation:shells:bash-les-differents-caracteres-speciaux|Vision d'ensemble]] | * [[doc:programmation:shells:bash-les-differents-caracteres-speciaux|Vision d'ensemble]] | ||
- | * [[docs:programmation:shells:la-page-man-bash-les-caracteres-speciaux|Détail et caractères]] | + | * [[doc:programmation:shells:la-page-man-bash-les-caracteres-speciaux|Détail et caractères]] |
* [[doc:programmation:shells:la-page-man-bash-ii-les-operateurs-lexicographiques|Les opérateurs lexicographiques]] | * [[doc:programmation:shells:la-page-man-bash-ii-les-operateurs-lexicographiques|Les opérateurs lexicographiques]] | ||
* [[doc:programmation:shells:page-man-bash-iii-les-operateurs-de-comparaison-numerique|Les opérateurs de comparaison numérique]] | * [[doc:programmation:shells:page-man-bash-iii-les-operateurs-de-comparaison-numerique|Les opérateurs de comparaison numérique]] | ||
* ;-) | * ;-) | ||
- | * [[atelier:chantier:page-man-bash-v-les-tableaux|Les tableaux]] | + | * [[doc:programmation:shells:page-man-bash-v-les-tableaux|Les tableaux]] |
- | * [[atelier:chantier:man-bash-vi-les-caracteres-de-transformation-de-parametres|Les caractères de transformation de parametres]] | + | * [[doc:programmation:shells:man-bash-vi-les-caracteres-de-transformation-de-parametres|Les caractères de transformation de parametres]] |
- | * [[atelier:chantier:bash-vii-globs-etendus-regex| Bash : Variables, globs étendus, ERb, ERe]] | + | * [[doc:programmation:shells:bash-vii-globs-etendus-regex| Bash : Variables, globs étendus, ERb, ERe]] |
- | Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | + | |
+ | ===== Introduction ===== | ||
+ | |||
+ | Dans la page précédente ([[doc:programmation:shells:page-man-bash-iii-les-operateurs-de-comparaison-numerique|Les opérateurs de comparaison numérique]]), nous avons abordé la commande interne **let** et la commande composée **<nowiki>((...))</nowiki>**.\\ | ||
+ | Nous complémentons ici leurs usages, pour réaliser des opérations mathématiques. | ||
+ | |||
+ | Les commandes **let** et **<nowiki>((...))</nowiki>** sont les seules commandes internes que bash dispose pour réaliser des opérations mathématiques.\\ | ||
+ | A travers elles, bash est limité à opérer que sur des entiers signés (positifs ou négatifs).\\ | ||
+ | Le résultat de l'évaluation d'une expression sera toujours un entier décimal signé. | ||
+ | |||
+ | Pour réaliser des opérations avec des nombres à virgule ou plus complexes, il faut nous tourner vers des commandes externes tel que **bc** (non installé par défaut) ou **awk**. Ou alors utiliser d'autres langages interprétés tel que **perl**, **python**, etc (awk, perl et python sont disponibles par défaut sur les systèmes Debian). | ||
+ | |||
+ | Avec **let** et **<nowiki>((...))</nowiki>**, la plage numérique autorisée est : **-9223372036854775808 < 0 > 9223372036854775807** | ||
+ | |||
+ | Après l'évaluation des expression qu'elles contiennent, **let** et **<nowiki>((...))</nowiki>** renvoient le code de retour : | ||
+ | |||
+ | * **0**, si le résultat est inférieur ou supérieur à 0. | ||
+ | * **1**, si le résultat est égale à 0. | ||
+ | |||
+ | La commande **<nowiki>((...))</nowiki>** peut-être préfixée du caractère de remplacement **$** pour former la commande **<nowiki>$((...))</nowiki>**, afin d’être remplacer par l'évaluation de l’expression qu'elle contient. | ||
+ | |||
+ | <note important> | ||
+ | La commande **$[...]** équivalente à la commande **<nowiki>$((..))</nowiki>** __**ne doit plus être utilisée**__.\\ | ||
+ | \\ | ||
+ | Elle est délaissée depuis la version 2.0 de bash au profit de **<nowiki>((...))</nowiki>**.\\ | ||
+ | \\ | ||
+ | Pour des raisons de rétrocompatibilités, elle est toujours active dans nos bash modernes.\\ | ||
+ | Mais n'est plus documentée dans la page du manuel.\\ | ||
+ | \\ | ||
+ | Viendra un jour où, **$[...]** ne sera plus. | ||
+ | </note> | ||
=====Opérateurs arithmétiques ===== | =====Opérateurs arithmétiques ===== | ||
Ligne 45: | Ligne 75: | ||
**Voir :** | **Voir :** | ||
- | * **[[atelier:chantier:script-bash-variables-arguments-parametres?&#typologie-des-variables|typologie de variables]]** | + | * **[[doc:programmation:shells:script-bash-variables-arguments-parametres?&#typologie-des-variables|typologie de variables]]** |
- | * **[[atelier:chantier:script-bash-variables-arguments-parametres?&#variables-numeriques-et-calculs|variables numériques et calculs]]** | + | * **[[doc:programmation:shells:script-bash-variables-arguments-parametres?&#variables-numeriques-et-calculs|variables numériques et calculs]]** |
=====Opérateurs binaires ===== | =====Opérateurs binaires ===== | ||
Ligne 63: | Ligne 93: | ||
> ''&&'' : exécution de la commande suivante si, et seulement si la précédente renvoie 0 | > ''&&'' : exécution de la commande suivante si, et seulement si la précédente renvoie 0 | ||
+ | > | ||
> ''||'' : exécution de la commande suivante si, et seulement si la précédente renvoie autre chose que 0 | > ''||'' : exécution de la commande suivante si, et seulement si la précédente renvoie autre chose que 0 | ||
+ | > | ||
> ''!'' : inverse du retour d'une commande, c'est à dire un "non" logique | > ''!'' : inverse du retour d'une commande, c'est à dire un "non" logique | ||
^_^ | ^_^ | ||
Ligne 70: | Ligne 102: | ||
===Post-incrémentation et pré-incrémentation :=== | ===Post-incrémentation et pré-incrémentation :=== | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
declare -i x=20 y # ici les signes = permettent une affection | declare -i x=20 y # ici les signes = permettent une affection | ||
Ligne 79: | Ligne 111: | ||
</code> | </code> | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
declare -i x=20 y | declare -i x=20 y | ||
Ligne 89: | Ligne 121: | ||
===Post-décrémentation et pré-décrémentation :=== | ===Post-décrémentation et pré-décrémentation :=== | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
declare -i x=20 y | declare -i x=20 y | ||
Ligne 98: | Ligne 130: | ||
</code> | </code> | ||
- | <code bash> | + | <code bash script> |
#!/bin/bash | #!/bin/bash | ||
declare -i x=20 y | declare -i x=20 y | ||
Ligne 117: | Ligne 149: | ||
=====La suite, c'est ici ===== | =====La suite, c'est ici ===== | ||
- | [[atelier:chantier:page-man-bash-v-les-tableaux|Bash : les tableaux]] | + | [[doc:programmation:shells:page-man-bash-v-les-tableaux|Bash : les tableaux]] |