Bash

如何擷取 bash 關鍵字的標準錯誤(例如時間)?

  • March 11, 2018

我想花時間閱讀 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 中()並將其重定向stderrstdout


例子:

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

引用自:https://unix.stackexchange.com/questions/429547