Problème dans script bash...
Eric
-
jipicy Messages postés 41342 Statut Modérateur -
jipicy Messages postés 41342 Statut Modérateur -
Bonjour,
Dans mon script, je récupère dans des lignes, une température qui est de forme 20.12
Je cherche à ne capturer que 20.1 par exemple; donc tronquer à 1 chiffre après la virgule.
Je cherche aussi à faire en sorte que:
if [ $T -gt 21 ]; then
echo "Il fait $T"
fi
Mais ça ne fonctionne pas...
Merci pour votre aide.
Cordialement, Eric .
Dans mon script, je récupère dans des lignes, une température qui est de forme 20.12
Je cherche à ne capturer que 20.1 par exemple; donc tronquer à 1 chiffre après la virgule.
Je cherche aussi à faire en sorte que:
if [ $T -gt 21 ]; then
echo "Il fait $T"
fi
Mais ça ne fonctionne pas...
Merci pour votre aide.
Cordialement, Eric .
A voir également:
- Problème dans 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
3 réponses
printf existe en commande interne dans bash
help printf; man bash; man 3 printf
Attention aux locales...
Johan
[johand@horus]~ $T=18,25; printf "Il fait %3.1f °C\n" $T Il fait 18,2 °C [johand@horus]~ $T=18.25; printf "Il fait %3.1f °C\n" $T -bash: printf: 18.25: invalid number Il fait 0,0 °C [johand@horus]~ $LANG=C; T=18.25; printf "Il fait %3.1f °C\n" $T Il fait 18.2 °C
help printf; man bash; man 3 printf
Attention aux locales...
Johan
Salut,
Tu peux aussi essayer avec ça :
Pour ta comparaison, il te faudra arrondir ta valeur à l'entier inférieur avant toute chose...
;-))
Tu peux aussi essayer avec ça :
[jp@MDK ~]$ T=21.12 ; T2=$(expr "$T" : "\(.*\..\)"); echo "Il fait $T2° C" Il fait 21.1° C [jp@MDK ~]$En ce qui concerne ton autre problème :
if [ $T -gt 21 ]; then echo "Il fait $T" fiLa comparaison échoue car "bash" ne sait traiter que des chaînes de caractères ou des entiers, mais pas des valeurs avec virgules.
Pour ta comparaison, il te faudra arrondir ta valeur à l'entier inférieur avant toute chose...
;-))