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.