Problème dans script bash...
Eric
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
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 .
3 réponses
-
printf existe en commande interne dans bash
[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 :[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" fi
La 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...
;-)) -
Salut à vous,
Eric il te faudra arrondir ta valeur à l'entier inférieur avant toute chose...T=20.12 TARRONDI=$(echo "scale=0;$T/1" | bc)
lami20j