没有子shell的多个命令的时间?

时间:2014-11-29 19:40:05

标签: time zsh subshell

有没有办法在zsh中使用time保留字来计时多个命令,而无需启动子shell?

我知道这有效:

{ time (
    sleep 5
    sleep 3
    PROMPT='foobar> '
) }

但是括号表示创建了一个子shell,并且初始化的变量不会被导出。

我知道我可以捕捉前后的变量,比如

start=$(time)
# do something
end=$(time)
echo start - end | bc

虽然对于临时计时,这有点麻烦。

1 个答案:

答案 0 :(得分:1)

不,time只能用于其他流程。因此,它不能使用{ ... }或使用内置函数,例如:

time { ls }
time echo

请注意,如果已经存在子节点,则捕获time输出的方法将无效(因为它们也会考虑运行命令的时间)。如果你有陷阱和相应的信号,也同样如此。