
 Envoyé par 
LsMarx
					
				 
				Mais j'ai un nouveau problème 

En effet je souhaiterais transformer les secondes (720sec, 840.083sec, 120.083sec) en minute seconde, jusque la rien de bien compliqué mais j'ai du mal avec les entiers/float
J'ai ça qui fonctionne pour les entiers:
	
	1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
   | #!/bin/sh
 
prMin=60
 
ResuStart=`grep "black_start" out.txt` 
ResuStart="${ResuStart##*black_start:}"
ResuStart="${ResuStart%black_end*}"
echo "$(($ResuStart / $prMin)) min $(($ResuStart % $prMin)) sec"  > result.txt
 
ResuEnd=`grep "black_end" out.txt` 
ResuEnd="${ResuEnd##*black_end:}"
ResuEnd="${ResuEnd%black_duration*}"
echo "$(($ResuEnd / $prMin)) min $(($ResuEnd % $prMin)) sec"  >> result.txt
 
ResuDuration=`grep "black_duration" out.txt` 
ResuDuration="${ResuDuration##*black_duration:}"
echo "$(($ResuDuration / $prMin)) min $(($ResuDuration % $prMin)) sec"  >> result.txt | 
 Mais pour les float j'ai l'erreur:
./essai.sh: 13: arithmetic expression: expecting EOF: "840.083  / 60"
Je sais pas comment faire pour éviter ça?! 
Merci
 
			
		 
	 
 un grand classique (voir FAQ)!
L'expression $((ResuDuration / prMin)) (où les '$' sont optionnels devant les variables) ne sait traiter que les entiers! 
Tu peux soit arrondir les flottants (supprimer ce qui suit le "."), soit utiliser un outil comme 'bc', par exemple: 
	
	echo "scale=2; $ResuDuration / $prMin" | bc -l
 ou bien ici:
	
	echo $(echo "$ResuStart / $prMin" | bc) min $(echo "$ResuStart % $prMin" | bc) sec  > result.txt
 HTH
)jack(
						
					
Partager