You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用time工具时如何同时获取命令执行时长与执行结果?

解决方法

要同时获取命令执行结果和time的时长信息,关键是避免在子shell中执行命令(否则变量无法传递到当前shell),同时正确捕获time的输出(time默认输出到标准错误)。

步骤1:执行命令并捕获输出和时长

使用bash的块命令{ ...; }(而非子shell(...))来包裹命令,这样变量会在当前shell中生效:

# 执行ls命令,将输出保存到v变量,同时捕获time的输出到time_var
time_var=$( { time v=$(ls); } 2>&1 )
# 从time_var中提取real时长到X
X=$(echo "$time_var" | grep '^real')

步骤2:验证结果

分别输出变量X和v即可查看时长和命令结果:

echo "执行时长:$X"
echo "命令输出:"
echo "$v"

原理说明

  • v=$(ls):将ls的标准输出捕获到变量v中。
  • { time v=$(ls); }:在当前shell中执行time命令包裹的v=$(ls),time的输出默认发送到标准错误。
  • 2>&1:将块命令的标准错误重定向到标准输出,这样就能被$(...)捕获到time_var中。
  • 最后用grep '^real'从time_var中提取出真实执行时长。

扩展:同时显示命令输出

如果希望在执行命令时直接看到输出(而不是只存在变量里),可以修改命令,让ls的输出同时发送到终端和变量:

# 同时显示ls输出并保存到v,再捕获time信息
time_var=$( { time v=$(ls | tee /dev/tty); } 2>&1 )
X=$(echo "$time_var" | grep '^real')

这样执行时会先显示文件列表,之后可以通过X和v获取时长和输出内容。

内容的提问来源于stack exchange,提问作者trzczy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 21:47:05