Afin de savoir combien de temps prennent certaines opérations dans un script Bash (v4 +), j'aimerais analyser le résultat de la time
commande "séparément" et (au final) le capturer dans une variable Bash ( let VARNAME=...
).
Maintenant, j'utilise time -f '%e' ...
(ou plutôt à command time -f '%e' ...
cause de Bash intégré), mais comme je redirige déjà la sortie de la commande exécutée, je suis vraiment perdu quant à la manière dont je voudrais capturer la sortie de la time
commande. En gros, le problème est de séparer la sortie de time
la sortie de la ou des commandes exécutées.
Ce que je veux, c'est la fonctionnalité qui consiste à compter le temps en secondes (entiers) entre le lancement d'une commande et son achèvement. Il n'est pas nécessaire que ce soit la time
commande ou l'intégré respectif.
Edit: étant donné les deux réponses utiles ci-dessous, je voulais ajouter deux clarifications.
- Je ne veux pas jeter la sortie de la commande exécutée, mais peu importe si elle se termine sur stdout ou stderr.
- Je préférerais une approche directe à une approche indirecte (c.-à-d. Capturer la sortie directement plutôt que de la stocker dans des fichiers intermédiaires).
La solution en utilisant date
jusqu'ici vient fermer à ce que je veux.
fork()
,execvp()
etwait3()/wait4()
. C'est finalement ce que font le temps et les amis. Je ne suis pas au courant d'une manière simple de le faire dans bash / perl sans rediriger vers un fichier ou une approche similaire.