Shell

測量命令的執行時間,包括擴展命令替換

  • July 1, 2016

我將如何測量由 shell 擴展的命令的執行時間?

例如:

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

忽略被替換命令的時間。

如何測量總時間,以獲得四秒作為輸出?

答案比我想像的要簡單。感謝John B,可以為此使用子外殼(...)

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

這發生在 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

一個簡單的解決方案是使用一些 from 分組:

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

引用自:https://unix.stackexchange.com/questions/293087