Problème dans script bash...

Fermé
Eric - 18 nov. 2006 à 22:04
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 19 nov. 2006 à 10:28
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 .
A voir également:

3 réponses

jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
19 nov. 2006 à 05:55
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
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
19 nov. 2006 à 09:50
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...

;-))
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
19 nov. 2006 à 10:22
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
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
19 nov. 2006 à 10:28
L'oignon fait la force ;-)))
0