通过bash脚本从'time'命令获取值

Der*_*rek 13 bash shell scripting time

我想用time命令运行一些可执行文件

time myexec -args
Run Code Online (Sandbox Code Playgroud)

如何在bash中仅将时间输出存储到变量中?这是我关心这个脚本的唯一部分,而不是可执行文件的输出.有没有办法获得该值,还是我必须解析整个命令的文本?

Pau*_*ce. 20

BashFAQ/032.

time在变量中捕获的所有输出(stdout,stderr和):

var=$( { time myexec -args; } 2>&1 )
Run Code Online (Sandbox Code Playgroud)

输出到stdout和stderr转到正常位置:

exec 3>&1 4>&2
var=$( { time myexec -args 1>&3 2>&4; } 2>&1 )  # Captures time only.
exec 3>&- 4>&-
Run Code Online (Sandbox Code Playgroud)


chr*_*ris 6

像这样的东西?

TIME="$(sh -c "time myexec -args &> /dev/null" 2>&1)"
Run Code Online (Sandbox Code Playgroud)

  • OP可以从bash*调用*这个代码,但是当你运行`sh -c`时,那不再是bash(如果你在Debian,Ubuntu等); 哪个shell用于*调用*`sh`与哪个shell实际*在给定系统上实现*`sh`的问题无关. (2认同)

Der*_*rek 5

实际上,我也发现了这个 - How to store a substring of the output of "time" function in bash script

可能更接近我正在寻找的东西