Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/06/2007, 17h43   #1
Membre confirmé
 
Avatar de N_I_C_S
 
Inscription : septembre 2006
Messages : 308
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 308
Points : 247
Points : 247
Par défaut Erreur de conversion chaine-entier

Salut,

Débutant en unix, je suis confronté à ce petit problème qui me fait m'arracher les cheveux!
J'ai des chaines de la forme (par ex.) "00086.1" qui correspondent à un numéro d'orbite terrestre (00086) et un type de demi-orbite (1) et, dans un script, je veux faire une fonction qui les renverrais sous forme d'un entier (c.a.d. 861).

La fonction : (la variable $2 est la chaine en question)
Code :
1
2
3
4
5
6
7
GetHo() {
 
	orbite=`echo $2 | awk -F'.' '{print $1}' `
	type=`echo $2 | awk -F'.' '{print $2}' `
 
	printf "%05d%01d" $orbite $type
}
et ça m'affiche "printf : 00086 not completely converted"
Quelqu'un voit-il le problème? Pitié, je veux pas finir chauve !
N_I_C_S est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 17h59   #2
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 88
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 88
Points : 39
Points : 39
Bonjour,

En fait, je crois que le printf ne considere pas les valeurs 000... comme un entier.

Donc si tu veux que cela afficher 00086 1 , il faut faire

Code :
1
2
3
4
5
6
7
 
 
printf "%05s%01d" $orbite $type
 
# Une methode plus rapide avec la commande tr fait une substitution de caractere. Il cherche un '.' qu'il remplace par rien.
 
echo 00086.1 | tr -d '.' ''
aikinhdo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 21h15   #3
Membre expérimenté
 
Avatar de BlaireauOne
 
Inscription : mars 2007
Messages : 469
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2007
Messages : 469
Points : 576
Points : 576
[QUOTE=N_I_C_S]Salut,
J'ai des chaines de la forme (par ex.) "00086.1" qui correspondent à un numéro d'orbite terrestre (00086) et un type de demi-orbite (1) et, dans un script, je veux faire une fonction qui les renverrais sous forme d'un entier (c.a.d. 861).


Une façon de faire :

Code :
1
2
3
4
5
6
 
$ var=000861.1
$ echo $var
000861.1
$ echo $var | awk '{ print $0*10 }'
8611
__________________
Loi de Murphy:
La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.
BlaireauOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 10h15   #4
Membre confirmé
 
Avatar de N_I_C_S
 
Inscription : septembre 2006
Messages : 308
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 308
Points : 247
Points : 247
Ca gaze au poil !
Merci beaucoup pour vos lumières.
a+
N_I_C_S est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h37.


 
 
 
 
Partenaires

Hébergement Web