GNU/Linux >> Tutoriels Linux >  >> Linux

Rediriger la sortie de la commande time sous unix vers une variable bash ?

Solution 1 :

X=`(temps ls) 2>&1 | grep réel`

Solution 2 :

Voir BashFAQ/032.

$ # captures output of command and time
$ time=$( TIMEFORMAT="%R"; { time ls; } 2>&1 )    # note the curly braces

$ # captures the time only, passes stdout through
$ exec 3>&1 4>&2
$ time=$(TIMEFORMAT="%R"; { time ls 1>&3 2>&4; } 2>&1)
bar baz
$ exec 3>&- 4>&-

Le temps ressemblera à "0.000" en utilisant TIMEFORMAT="%R" qui sera le temps "réel".

Solution 3 :

Time écrit sa sortie dans STDERR plutôt que dans STDOUT. Pire encore, par défaut 'time' est une commande intégrée du shell, donc si vous essayez 'time ls 2>&1' le '2>&1' ne s'applique qu'à 'ls'.

La solution serait probablement quelque chose comme :

/usr/bin/time -f 'real %e' -o OUTPUT_FILE ls > /dev/null 2>&1<br>
REALTIME=$(cat OUTPUT_FILE | cut -f 2 -d ' ')

Il existe des façons plus sophistiquées de le faire, mais c'est la manière claire/simple.


Linux
  1. Rediriger la sortie d'une commande dans 'time Command' ?

  2. La commande Rm dans le script Bash ne fonctionne pas avec la variable ?

  3. Exemples de commande de temps Linux

  4. 12 Exemples d'options de format de sortie de commande de temps UNIX/Linux

  5. Diviser la sortie de la commande par colonnes à l'aide de Bash ?

Comment affecter la sortie d'une commande Linux à une variable

Comment rediriger la sortie de la commande shell

passer grep dans une variable bash

Comment rediriger la sortie de la commande time vers un fichier sous Linux ?

Code de sortie de l'affectation de variable à la substitution de commande dans Bash

Sortie détaillée de la commande Bash find