测量命令的执行时间,包括命令替换的扩展

测量命令的执行时间,包括命令替换的扩展

我将如何测量 shell 扩展的命令的运行时间?

例如:

➜ time sleep $(sleep 3; echo 1)
sleep $(sleep 3; echo 1)  0.00s user 0.00s system 0% cpu 1.003 total

忽略替换命令的时间。

如何测量总时间,以获得四秒作为输出?

答案1

答案比我想象的要简单。归功于约翰·B,可以使用子 shell(...)来实现这一点:

➜ time (sleep $(sleep 3; echo 1))
( sleep $(sleep 3; echo 1); )  0.00s user 0.00s system 0% cpu 4.007 total

答案2

这发生在 zsh 中:

$ zsh -c 'time sleep $(sleep 3; echo 1)'
sleep $(sleep 3; echo 1)  0,00s user 0,00s system 0% cpu 1,001 total

但在 bash(或 ksh)中则不然:

$  bash -c 'time sleep $(sleep 3; echo 1)'

real    0m4.003s
user    0m0.000s
sys     0m0.000s

一种简单的解决方案是使用一些分组:

$ zsh -c 'time ( sleep $(sleep 3; echo 1); )'
( sleep $(sleep 3; echo 1); )  0,00s user 0,00s system 0% cpu 4,003 total

相关内容