transformer une durée HMS en s

Le
jean-jacques
Bonjour.
Je me suis posé ce pb trivial et puis je me suis aperçu que je ne trouvais
pas cela si simple . J'ai utilisé une variable array.
Voila ce que j'ai fait(!)
#!/bin/bash
#transforme en s une duree donnee en H M S ex 2H35M45S
#utilise un tableau $table
if [ 0 -eq $# ]
then echo " entrez une duree ex 2H35M45S "
else
declare -a table
for j in 1 2 3
do
x=$(echo $1|sed 's/[A-Z]/:/g'|cut -d : -f$j)
table[j]=$x
done
temps=$((${table[1]}*3600+${table[2]}*60+${table[3]}))
echo $temps
fi

Je voulais indexer une variable par les index de boucle:
for j in 1 2 3
do
x$j=$(echo $1|sed 's/[A-Z]/:/g'|cut -d : -f$j )etc.
Apparemment l'affectation ne fonctionne pas.
--
cordialement jean-jacques.
Ce message a été écrit sur un système libre mandriva
"Tant que l'homme sera mortel, il ne pourra pas être totalement
décontracté ."
Woody Allen.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Luc.Habert.00__arjf
Le #755416
jean-jacques :

Bonjour.
Je me suis posé ce pb trivial et puis je me suis aperçu que je ne trouvais
pas cela si simple . J'ai utilisé une variable array.
Voila ce que j'ai fait(!)
#!/bin/bash
#transforme en s une duree donnee en H M S ex 2H35M45S
#utilise un tableau $table



OLDIFS=$IFS
IFS=HMS
set -f
set -- $1
set +f
IFS=$OLDIFS
SECONDES=`expr "$1" '*' 3600 + "$2" '*' 60 + "$3"`

Je voulais indexer une variable par les index de boucle:
for j in 1 2 3
do
x$j=$(echo $1|sed 's/[A-Z]/:/g'|cut -d : -f$j )etc.
Apparemment l'affectation ne fonctionne pas.


PLOUM=$(echo $1|sed 's/[A-Z]/:/g'|cut -d : -f$j )
eval "x$j="'$PLOUM'

mais c'est une horreur.

Stephane Chazelas
Le #755415
2007-06-24, 19:47(+02), jean-jacques:
Bonjour.
Je me suis posé ce pb trivial et puis je me suis aperçu que je ne trouvais
pas cela si simple . J'ai utilisé une variable array.
Voila ce que j'ai fait(!)
#!/bin/bash
#transforme en s une duree donnee en H M S ex 2H35M45S
#utilise un tableau $table


Quel est l'interet de programmer en bash (ou ksh, zsh...)?

printf 'Entrez une valeur: '
awk -F'[^0-9]+' '{print "Resultat:", ($1*60+$2)*60+$3; exit}'

Pas besoin de "#!" et utiliser une syntaxe standard.

Et ne pas oublier qu'un shell est avant tout un interpreteur de
commande. Le boulot doit etre fait par les commandes. Si on fait
faire le boulot au shell, alors autant utiliser un vrai language
de programmation. En particulier l'utilisation d'array est un
signe qu'on part dans la mauvaise direction.

--
Stéphane

jean-jacques
Le #755414
Luc Habert wrote:

jean-jacques :


mais c'est une horreur.
Merci à vous deux.

Je vais étudier vos réponses!
Il y a loin de la coupe aux lèvres. :-((

--
cordialement jean-jacques.
Ce message a été écrit sur un système libre mandriva
"Tant que l'homme sera mortel, il ne pourra pas être totalement
décontracté ."
Woody Allen.

Publicité
Poster une réponse
Anonyme