Probleme avec un script bash
Résolu
oupsman
Messages postés
319
Statut
Membre
-
dubcek Messages postés 19021 Statut Contributeur -
dubcek Messages postés 19021 Statut Contributeur -
Bonjour, voici mon petit programme très simple
#!/bin/bash
VAR1=3
VAR2=7
if [ "$VAR1" > "$VAR2" ]
then
echo Je suis dans la condition vraie
echo "$VAR1 > $VAR2"
else
echo Je suis dans la condition fausse
echo "$VAR1 < $VAR2"
fi
Il m'affiche :
Je suis dans la condition vraie
3 > 7
Alors que 3 est strictement plus petit que 7 donc il doit m'afficher :
Je suis dans la condition fausse
3 < 7
MErci de votre aide ;-)
#!/bin/bash
VAR1=3
VAR2=7
if [ "$VAR1" > "$VAR2" ]
then
echo Je suis dans la condition vraie
echo "$VAR1 > $VAR2"
else
echo Je suis dans la condition fausse
echo "$VAR1 < $VAR2"
fi
Il m'affiche :
Je suis dans la condition vraie
3 > 7
Alors que 3 est strictement plus petit que 7 donc il doit m'afficher :
Je suis dans la condition fausse
3 < 7
MErci de votre aide ;-)
A voir également:
- Probleme avec un script bash
- Script vidéo youtube - Guide
- Ghost script - Télécharger - Polices de caractères
- Mas script - Accueil - Windows
- Bingo bash free - Télécharger - Divers Jeux
- Bash addition - Forum Shell
4 réponses
hello
et comme cela
if [ $VAR1 -lt $VAR2 ]
string1 > string2
True if string1 sorts after string2 lexicographically in the current locale.
et comme cela
if [ $VAR1 -lt $VAR2 ]
string1 > string2
True if string1 sorts after string2 lexicographically in the current locale.
hello
string1 == string2
True if the strings are equal. ‘=’ may be used in place of ‘==’ for strict posix compliance.
string1 != string2
True if the strings are not equal.
string1 < string2
True if string1 sorts before string2 lexicographically in the current locale.
string1 > string2
True if string1 sorts after string2 lexicographically in the current locale.
arg1 OP arg2
OP is one of ‘-eq’, ‘-ne’, ‘-lt’, ‘-le’, ‘-gt’, or ‘-ge’. These arithmetic binary operators
string1 == string2
True if the strings are equal. ‘=’ may be used in place of ‘==’ for strict posix compliance.
string1 != string2
True if the strings are not equal.
string1 < string2
True if string1 sorts before string2 lexicographically in the current locale.
string1 > string2
True if string1 sorts after string2 lexicographically in the current locale.
arg1 OP arg2
OP is one of ‘-eq’, ‘-ne’, ‘-lt’, ‘-le’, ‘-gt’, or ‘-ge’. These arithmetic binary operators
Salut,
je penses pas qu'on puisses utiliser ">" et "<" en bash.
Ceci dit je peut me tromper j'ai que trois jours de bash derriére moi mais:
Remplaces les chevrons par -lt (lower to) et -gt (greater to), c'est ce que j'ai utilisé dans mon 1er script:
A propos si qqun a un meilleur algo pour les nombres aléatoires je suit preneur ;)
|\_
(:> _)X
|/
je penses pas qu'on puisses utiliser ">" et "<" en bash.
Ceci dit je peut me tromper j'ai que trois jours de bash derriére moi mais:
Remplaces les chevrons par -lt (lower to) et -gt (greater to), c'est ce que j'ai utilisé dans mon 1er script:
#! /bin/bash # deviner un nombre pseudo-aleatoire(1-100) Nb1=`date | cut -d" " -f5 | cut -d":" -f2` Nb2=`date | cut -d" " -f5 | cut -d":" -f3` Score=0 Nombre=$((Nb1+2*Nb2)) if [ $Nombre -gt 100 ] then Nombre=$((Nombre-100)) fi echo "\$Nb1= $Nb1 \$Nb2= $Nb2 Nombre = $Nombre" NbCoup=10 clear echo -n "Entrez votre nom: " read joueur clear echo "*************************************" echo "** **" echo "** GUESS NUMBER (1-100) **" echo "*************************************" while [ $NbCoup -gt 0 ] do echo "Coups restant $NbCoup" echo -n "Entrez un nombre" read devine if [ $devine -eq $Nombre ] then echo "BraVo Vous avez trouvé en $((11-NbCoup)) coup(s)" Score=$((NbCoup*Score)) echo "$joueur :.:" `date` ":.:" $Score >>highscore cat highscore exit $NbCoup fi if [ $devine -lt $Nombre ] then echo "Trop Petit" NbCoup=$((NbCoup-1)) diff=$((devine-Nombre)) if [ $diff -lt 0 ] then diff=$((-diff)) fi Score=$((Score+diff)) fi if [ $devine -gt $Nombre ] then echo "Trop Grand" NbCoup=$((NbCoup-1)) diff=$((devine-Nombre)) if [ $diff -lt 0 ] then diff=$((diff*-1)) fi Score=$((Score+diff)) fi done echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" echo "XX Game Over $Nombre XX" echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" exit 1
A propos si qqun a un meilleur algo pour les nombres aléatoires je suit preneur ;)
|\_
(:> _)X
|/
j'ai fais comme tu dis :
#!/bin/bash
VAR1=3
VAR2=7
if [ $VAR1 -lt $VAR2 ]
then
echo "$VAR1 > $VAR2"
else
echo "$VAR1 < $VAR2"
fi
Résultat : 3 > 7 (toujours pareil, rien n'a changé)
Normal, t'as inversé les "< > " ;-))
-lt veut dire inférieur à ...;-))
Mais ce que je ne comprend pas, donc les signes '>' ou '<' n'est pas reconnu dans un test de condition dans if ?
pourtant '=' n'a pas besoin d'être écrit par autre chose ....
donc je ne comprend pas pourquoi on ne peut pas écrire '<' à la place de '-lt' ?
Si, enfin sans la peudo-commande "test" ou "[...]" :;-))
encore merci et à + ;-)