Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 19/05/2007, à 18:28

slapierre

[Résolu] Extraire une string avec Bash 2.03

J'ai besoin d'aide!

J'ai fait un script pour faire un banc d'essai qui appelle mon programme avec différents paramètres. Ça fonctionne très bien chez moi mais le serveur sur lequel le projet sera évalué roule avec une vieille version de bash :

>>> GNU bash, version 2.03.0(1)-release (sparc-sun-solaris)

Voici le code de ma fonction qui transforme un nombre en notation à point fixe (.0002) vers la notation scientifique (2e-4). Le calcul se fait sans problèmes, mais je me retrouve avec un nombre avec 64 chiffres! Je tronque le tout à 8 chiffres significatifs pour obtenir une notation de [1].[8]e^(-x).

Mon problème vient de la dernière ligne, où j'extraie les chaînes de caractères. Je reçois :

>>> expr: syntax error

function notation_scientifique()
{
	local FACTEUR_MULTIPLICATIF=10.0
	local ZERO=0

	local str=$1		     # Le premier argument correspond au nombre à traiter
	local cnt=$ZERO		# Initialiser le compteur	
	
	# Le 2e argument est une référence indirecte vers la variable de retour
	sci=\$"$2"
	
	# Tant que 'str' est inférieur à zéro : multiplier 'str' par 10 et incrémenter
	# le compteur, travailler en hautre précision
	while [ $str \< $ZERO ]; do
		str=$(echo "scale=$PRECISION_HIGH; $str * $FACTEUR_MULTIPLICATIF" | bc)	
		let cnt=$cnt+1
	done
	
	# Générer un nombre avec la notation scientifique au format : [1].[8]
	sci=`expr substr $str 1 $PRECISION_LOW`"e-"$cnt	
}

Merci d'avance à tous les vieux bourlingueurs qui liront ce message!

Simon

Dernière modification par slapierre (Le 19/05/2007, à 18:53)


"Le spectre de la folie nous empêchera-t-il de hisser l'étendard de l'imagination?" - André Breton

Hors ligne

#2 Le 19/05/2007, à 18:53

slapierre

Re : [Résolu] Extraire une string avec Bash 2.03

str=0.123456789
a=${str:0:1}
b=${str:2:8}
echo $a
echo $b

"Le spectre de la folie nous empêchera-t-il de hisser l'étendard de l'imagination?" - André Breton

Hors ligne