Bash
如何擷取 bash 關鍵字的標準錯誤(例如時間)?
我想花時間閱讀 bash 歷史並將結果放入變數中。不幸的是,
time
(這是一個 shell 關鍵字)將結果列印到stderr
,並且顯然stderr
從 shell 關鍵字重定向與重定向正常命令輸出的工作方式不同。換句話說,foo=$(time history -r 2>&1)
不起作用(
foo
變數為空,輸出列印到終端)。如何擷取time
關鍵字的輸出?注意:由於
history
是內置的 shell,我不能使用外部time
命令(即/usr/bin/time
) - 我必須time
在 bash 中使用關鍵字。
您可以使用以下語法:
foo=$((time history -r) 2>&1)
將命令放在 a 中
()
並將其重定向stderr
到stdout
例子:
$ foo=$((time history -r) 2>&1) $ echo $foo real 0m0.001s user 0m0.000s sys 0m0.000s $