GNU/Linux >> Linux の 問題 >  >> Linux

UNIXのtimeコマンドの出力をbashの変数にリダイレクトしますか?

解決策 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 ' ')

より凝った方法がありますが、それが明快でシンプルな方法です。


Linux
  1. コマンドの出力をシェル変数に割り当てる方法は?

  2. コマンドの出力をシェル変数に保存しますか?

  3. `time Command`でコマンドの出力をリダイレクトしますか?

  1. 12 UNIX / Linux 時刻コマンド出力形式オプション例

  2. コマンドの出力をBashを使用して列ごとに分割しますか?

  3. time コマンドの出力を Linux のファイルにリダイレクトする方法は?

  1. コマンド出力をファイルと端末にリダイレクト

  2. awk の bash キャプチャ出力を配列に

  3. Bashのコマンド置換への変数代入の終了コード