我想为一系列输入变量测量我的程序的运行时间(我正在使用 zsh):
for i in {1..3} ; do time sleep $i ; done
输出是
sleep $i 0,00s user 0,00s system 0% cpu 1,003 total
sleep $i 0,00s user 0,00s system 0% cpu 2,003 total
sleep $i 0,00s user 0,00s system 0% cpu 3,002 total
但我希望它是
sleep 1 0,00s user 0,00s system 0% cpu 1,003 total
sleep 2 0,00s user 0,00s system 0% cpu 2,003 total
sleep 3 0,00s user 0,00s system 0% cpu 3,002 total
如何time
打印实际命令,所有变量都替换为它们的值?
我已经尝试在子 shell 中运行程序,它没有按预期更改输出:
for i in {1..3} ; do time (sleep $i) ; done
由于我的程序为 stdout 和 stderr 生成自己的输出,因此我看不到一种方法可以简单地预先添加所有参数(还有一些不仅仅是i
),例如:
for i in {1..3} ; do echo -n "i=$i --> " ; time sleep $i ; done