有没有办法在zsh中使用time
保留字来计时多个命令,而无需启动子shell?
我知道这有效:
{ time (
sleep 5
sleep 3
PROMPT='foobar> '
) }
但是括号表示创建了一个子shell,并且初始化的变量不会被导出。
我知道我可以捕捉前后的变量,比如
start=$(time)
# do something
end=$(time)
echo start - end | bc
虽然对于临时计时,这有点麻烦。
答案 0 :(得分:1)
不,time
只能用于其他流程。因此,它不能使用{ ... }
或使用内置函数,例如:
time { ls }
time echo
请注意,如果已经存在子节点,则捕获time
输出的方法将无效(因为它们也会考虑运行命令的时间)。如果你有陷阱和相应的信号,也同样如此。