Soluzione 1:
X=`(tempo ls) 2>&1 | grep real`
Soluzione 2:
Vedi 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>&-
L'ora apparirà come "0.000" usando TIMEFORMAT="%R"
che sarà l'ora "reale".
Soluzione 3:
Time scrive il suo output su STDERR anziché su STDOUT. A peggiorare le cose, per impostazione predefinita 'time' è un comando integrato della shell, quindi se provi 'time ls 2>&1' il '2>&1' si applica solo a 'ls'.
La soluzione sarebbe probabilmente qualcosa del tipo:
/usr/bin/time -f 'real %e' -o OUTPUT_FILE ls > /dev/null 2>&1<br>
REALTIME=$(cat OUTPUT_FILE | cut -f 2 -d ' ')
Ci sono modi più fantasiosi per farlo, ma questo è il modo chiaro/semplice.