Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/01/2020, à 18:37

diesel

[RESOLU] Je suis con ou quoi ? (suis-je vraiment devenu moins con ?)

Bonsoir,

J'ai écrit le script suivant :

#!/bin/bash

a=2
b=5

if [ $a > $b ]

then

	echo "a est censé être supérieur à b mais ce n'est pas vrai"

else

	echo "a n'est pas supérieur à b et c'est vrai"

fi
exit 0

et à l'exécution, ça me donne ça :

jean-marie@jean-marie:~/Bureau$ ./test.sh 
a est censé être supérieur à b mais ce n'est pas vrai
jean-marie@jean-marie:~/Bureau$

Où c'est que j'ai merdé ?

Amicalement.

Jean-Marie

Dernière modification par diesel (Le 25/01/2020, à 18:56)


Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.

Hors ligne

#2 Le 25/01/2020, à 18:51

Watael

Re : [RESOLU] Je suis con ou quoi ? (suis-je vraiment devenu moins con ?)

ouh, oulala.

- `<' n'est pas un opérateur de comparaison arithmétique; c'est pour comparer des chaînes.
- il faut le protéger avec un antislash, sinon c'est une redirection
- et, quand ce qu'on compare n'est pas typé, il faut mettre des guillemets autour des variables. TOUJOURS. à moins de savoir pourquoi.

declare -i a b
if test $a -gt $b #parce qu'on sait que ça ne peut être que des nombres
# ou
if (( $a > $b )) #le contexte arithmétique de l'évaluation entre double parenthèses inhibe la redirection

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 25/01/2020, à 18:52

pingouinux

Re : [RESOLU] Je suis con ou quoi ? (suis-je vraiment devenu moins con ?)

Bonjour,
Utilise plutôt une de ces formes :

if [ "$a" -gt "$b" ]
if [[ "$a" > "$b" ]]
if [[ a > b ]]
if (( a > b ))

Hors ligne

#4 Le 25/01/2020, à 18:54

diesel

Re : [RESOLU] Je suis con ou quoi ? (suis-je vraiment devenu moins con ?)

Je suis vraiment con de ne pas avoir pensé à la redirection.

Merci mille fois Watael (et Pingouinux). Expliqué comme ça, c'est vraiment plus clair.

Amicalement.

Jean-Marie

Dernière modification par diesel (Le 25/01/2020, à 18:54)


Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.

Hors ligne

#5 Le 25/01/2020, à 19:24

erresse

Re : [RESOLU] Je suis con ou quoi ? (suis-je vraiment devenu moins con ?)

Apparemment, c'est le test avec [ ... ] qui ne supporte pas les opérateurs > <, si tu fais le même test avec [[ ... ]], pas de problème !


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

En ligne

#6 Le 25/01/2020, à 19:45

kamaris

Re : [RESOLU] Je suis con ou quoi ? (suis-je vraiment devenu moins con ?)

Il les supporte, mais

Watael a écrit :

il faut le protéger avec un antislash, sinon c'est une redirection

Attention cependant à une autre chose, lorsque c'est bien un tri alphabétique qu'on veut faire, et non pas une comparaison de nombres : test ou […] opère un tri ascii, tandis que [[…]] opère un tri selon la langue du système.
Ainsi

$ [ é \< f ]; echo $?
1
$ [[ é < f ]]; echo $?
0
$ 

Hors ligne