Vous n'êtes pas identifié(e).
Hors ligne
Hors ligne
Hors ligne
Hors ligne
Hors ligne
Hors ligne
Hors ligne
Hors ligne
Les opérateurs booléens de comparaison numérique, cela n'existe pas ! Les opérateurs booléens travaillent sur des opérandes booléens et non numériques. Les opérateurs de comparaison numériques travaillent sur des opérandes numériques.
L'opérateur ! n'est pas un opérateur de comparaison. Lui, c'est un opérateur booléen unaire : Il prend une valeur booléenne et retourne son inverse (que l'on nomme négation).
Avec la commande composée d’évaluation numérique ((,
l'opérateur = n'est pas un opérateur de comparaison, mais d'affectation. Il d'abord présent dans le tableau des opérateurs de comparaison, puis utilisé comme opérateur d'affection. En nous expliquant qu'il doit etre utilisé avec des espaces. Pourtant (( a = 1 )) et ((a=1)) sont identiques, identique a=1 ou déclare -i a=1 (quoi que avec declare -i, a ne pourra etre valorisé qu'avec des valeur numérique, tout comme ((a=<numérique>). Tandis qu'avec l'affection a=<valeur>, a pourra mémorisé n'importe quelle chaîne de caractère)
Il nous est aussi expliqué qu'on ne vérifie pas si deux nombres sont égaux avec les doubles parenthèses car cela n'est pas une comparaison. Pourtant dans le tableau des opérateurs de comparaison on trouve l'opérateur == décrit comme comparaison d'une égalité
Puis on assiste au mauvais usage de la commande [ avec l’opérateur > non protégé (erreur fréquente) qui permet d'affirmer la monstruosité que dans le classement lexicographique 23 est > à 24.
Et on atteint des sommets avec le script :
#!/bin/bash
var1=8
var2=7
if test "$e" -gt "$f" ; then
echo " $var1 est plus grand que $var2 "
fi
echo " "
if test 8 -gt 7 ; then
echo " $var1 est plus grand que $var2 "
fi
Avec le retour donné
: ligne 18 : test: : nombre entier attendu comme expression
8 est plus grand que 7
Ou est la ligne 18 ? Dans un script qui fait 10 lignes !
Haha, si avec cela le débutant n'est pas parti, les cheveux ébouriffés, en courant , gesticulant en tous sens et criant whazzza, pour ne jamais revenir.
Je comprends :
Pffffff, étourdissante ...
à qui le dis-tu, je m'y perds moi-même .....
Bon ok la critique est facile, voyons se que l'on peut modifier pour corriger et améliorer tout cela.
Dernière modification par agp91 (14-02-2023 09:54:35)
La liberté est gratuite et accessible à tous. Sinon ça n'en est pas.
En ligne
Ajout d'une section Introduction.
Énumération des commande permettant la comparaison numérique
Ajout de rappels élémentaires.
Modification du titre "Opérateurs booléens de comparaison de nombres" en Comparaison numérique avec ((.
Suppression de l'ineptie : Comme aux chapitres précédents on retrouve les opérateurs de comparaisons booléens de comparaison (== , != , < , > , >=, ⇐ , ! ).
Déplacement et réécriture de la syntaxe des commandes ((, ajout de la commande let.
Ajout d'un titre au tableau des opérateurs de comparaison.
Suppression de l'opérateur d'affectation = du tableau des opérateurs de comparaison. Sa place est dans la page suivante (Bash : les symboles dans les calculs) de cette série de documentation.
Suppression l'ineptie : "Attention on ne vérifie pas si deux nombres sont égaux avec les doubles parenthèses car cela n'est pas une comparaison ! ".[/n]
Ajout d'une sous-section Exemples dans le terminal.
Réécriture des exemples pour qu'il soit plus lisible, suppression des affections avec la commande ((. Ajout d'exemples pour la commande let
Ajout d'exemples pour (( et let montrant que $ n'est pas nécessaire pour développer les paramètre pas nécessaires .
Ajout d'exemples montrant que les espaces ne sont pas obligatoire pour ((.
Ajout de la sous-section mauvais usages.
Ajout d'exemples montrant que let n'accepte pas les espaces
Ajout d'exemples expliquant pourquoi les opérateur <, <=, > et >= doivent être protégés avec let
Ajout d'exemple montrant que les opérandes sont obligatoires
Ajout d'exemples montrant que les opérandes ne peuvent être des chaînes de caractères avec des espaces.
Ajout d'une section Exemple dans un script.
Ajout de l'explication pourquoi le script retourne 0 même si le test effectué dans le script échoue.
Ajout d'une section Exemple dans une fonction.
Ajout de l''exemple de la fonction test_si_négatif.
Déplacement et réécriture du bloc d'alerte sur l'usage des opérateur < et >, dans la section suivante.
Modification du titre "Opérateurs de comparaison de nombres avec la commande test ou les crochets" en Comparaison numérique avec [ et [[.
Suppression des sous-sections{/*]
Suppression de l'ineptie : "(pour comparer des nombres comme avec les booléens, mais avec la commande test ou crochets)".
Déplacement et réécriture de la syntaxe de la commande, ajout de la syntaxe de la commande [[.
Ajout d'un titre au tableau des opérateurs de comparaison.
Ajout de la sous section Exemples dans le terminal.
Regroupe les exemples des trois commandes en un seul bloc
Ajout de la sous-section Particularités de [[
Ajout d'exemples de l'évaluation d'une expression arithmétique.
Ajout d'exemples pour des opérandes vides
Ajout d'exemples pour des opérandes mots
Ajout de la sous-section Mauvais usages
Ajout d'exemples pour [ et test avec chaînes vides
Ajout d'exemple pour [ et test avec des mots
Ajout d'exemples pour [, test et [[ avec des opérandes chaines de caractères
Ajout d'exemples pour [, test et [[ montrant que les 2 opérandes sont obligatoires
Ajout d'exemples pour [, test et [[ montrant que les espaces sont obligatoires
Ajout de la sous-section Exemples dans un script
Regroupement des exemples dans un seul script
Modification du dernier script : remplacement de echo " " par printf \\n
Correction du retour de ce dernier script
Voila jusqu'à là.
Je ne sais pas quoi faire avec la section Conclusion sur les opérateurs lexicographiques et les opérateurs de comparaison numérique
Les opérateurs de (ou sur) fichiers ne sont pas des opérateurs lexicographiques.
D’ailleurs les opérateurs lexicographique je ne sais pas si cela existe. Il y a bien les opérateur de comparaison lexicographiques qui sont seulement deux sous bash , < et > avec les commandes [ (ou test) et [[.
La suite n'es pas plus juste.
... Peut-etre le supprimer tout simplement.
La section suivante (et dernière) n'a pas sa place sur cette page.
Les opérateurs logiques ou (booléens), n'ont rien à faire sur une page nommée "les opérateurs de comparaison numérique".
Et ils sont aussi disponibles avec les commandes let et ((.
La liberté est gratuite et accessible à tous. Sinon ça n'en est pas.
En ligne
Déplacement de la section Comparaison numérique avec [ et [[ au début (pour le lien avec la page précédente qui utilise uniquement les commande de test.)
Suppression de la section Conclusion sur les opérateurs lexicographiques et les opérateurs de comparaison numérique
MAJ du lien interne de la section Tuto précédent
MAJ de l'entête :
Ajout de la date de modification (Modifié par ... le ...)
Ajout du tag à-tester
MAJ du sommaire du projet
Dernière modification par agp91 (21-02-2023 03:20:42)
La liberté est gratuite et accessible à tous. Sinon ça n'en est pas.
En ligne