有没有办法测量 bash 文件中每个命令所花费的时间?因此,将时间放在每个命令之前。命令的数量目前未知,因为我也打算将这个时间度量用于未来的 bash 脚本。另外值得一提的是,我打算只运行具有 command1、command2、command3 等的简单 bash 脚本。因此,没有复杂的更高逻辑脚本。
假设我有一个与此类似的 bash 文件:
#!/bin/bash
mv /path/to/file /other/path/
cd /other/path/
tar -xzf /other/path/file
有没有办法获得类似的输出?
6.553s mv /path/to/file /other/path/
0.057s cd /other/path/
19.088s tar -xzf /other/path/file
我知道time
我可以得到一个命令所花费的时间。但我正在寻找一种解决方案来测量每个命令本身的时间。
您可以使用与以下示例类似的
/usr/bin/time
选项。-f
在你的 shellscript 中的每个命令前面加上/usr/bin/time -f "%E %C"
有关
man time
更多详细信息,请参阅。例子:
我制作了一个小脚本,可以通过识别命令来修改简单的shellscript,可以使用
/usr/bin/time
. 让我们使用名称time2script
。使用
time2script
已编辑问题中的示例:重定向以创建修改后的 shellscript,
这是天真的方法。它有几个失败点*,所以我不一定推荐使用它,只是想提一下。
示例脚本 foo.sh:
示例运行:
* 例如
eval
,多行命令会阻塞,例如函数声明、数组声明、heredocs,甚至多行引号。并且依赖于值的命令$0
可能不起作用。