解決策 1:
<ブロック引用>X=`(時間 ls) 2>&1 | grep real`
解決策 2:
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>&-
TIMEFORMAT="%R"
を使用すると、時間は「0.000」のようになります これが「リアルタイム」になります。
解決策 3:
Time はその出力を STDOUT ではなく STDERR に書き込みます。さらに悪いことに、デフォルトでは 'time' はシェルの組み込みコマンドであるため、'time ls 2>&1' を試行すると、'2>&1' は 'ls' にのみ適用されます。
解決策はおそらく次のようになります:
/usr/bin/time -f 'real %e' -o OUTPUT_FILE ls > /dev/null 2>&1<br>
REALTIME=$(cat OUTPUT_FILE | cut -f 2 -d ' ')
より凝った方法がありますが、それが明快でシンプルな方法です。