コマンド代替拡張を含むコマンドの実行時間を測定します。

コマンド代替拡張を含むコマンドの実行時間を測定します。

シェル拡張コマンドの実行時間をどのように測定しますか?

たとえば、

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

代替コマンドのタイミングを無視します。

4秒を出力するのにかかる合計時間をどのように測定できますか?

答え1

答えは思ったより簡単です。 ~に帰属ジョンB(...)、これを達成するためにサブシェルを使用できます。

➜ 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

関連情報