bashキーワード(時間など)の標準エラーをキャプチャする方法は?

bashキーワード(時間など)の標準エラーをキャプチャする方法は?

bashレコードを時間単位で読み取り、結果を変数に入れたいです。残念ながら、time(シェルキーワードである)結果はに印刷されstderr、明らかにstderrシェルキーワードからのリダイレクトは通常のコマンド出力のリダイレクトとは異なります。つまり、

foo=$(time history -r 2>&1)

動作しません(foo変数が空で、出力が端末に印刷されます)。timeキーワードの出力をキャプチャする方法は?

注:シェルは組み込みのため、外部コマンド(例:)historyは使用できません。 bashではキーワードを使用する必要があります。time/usr/bin/timetime

ベストアンサー1

次の構文を使用できます。

foo=$((time history -r) 2>&1)

コマンドをaに入れて次に()リダイレクトします。stderrstdout


例:

$ foo=$((time history -r) 2>&1)
$ echo $foo
real 0m0.001s user 0m0.000s sys 0m0.000s
$ 

おすすめ記事