0

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

我知道这有效:

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

然而括号意味着创建了一个子shell,并且初始化的变量不会被导出。

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

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

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

4

1 回答 1

1

不,time只能在不同的进程上工作。因此,它不适{ ... }用于内置插件,例如:

time { ls }
time echo

请注意,time如果已经有孩子,那么您捕获输出的方法将不起作用(因为他们在运行命令时的时间也将被考虑在内)。如果您有陷阱并且出现相应的信号,则同上。

于 2014-11-29T22:40:45.407 回答