我将如何测量 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