使用bash time命令存格式化实测时间到文件的更短实现方式及tee用法
更短的实现方式
你现在的写法本身就已经很精简了,只能做小幅的字符压缩,核心逻辑不用改:
TIMEFORMAT='%4R' { time <script> 2><script>.stderr; } 2>>time.txt
原来把TIMEFORMAT写在大括号里是完全没问题的,移到命令前缀可以省掉大括号里的几个字符,再去掉多余的空格就是更短的版本。
如果你的场景不需要保留脚本的标准错误输出,还可以更短:
TIMEFORMAT='%4R' time <script> 2>&- 2>>time.txt
用tee实现的方案
可以用tee完成需求,尤其是你需要把时间同时输出到终端、或者存到多个文件的时候很合适,示例写法:
{ TIMEFORMAT='%4R' time <script> 2><script>.stderr; } 2>&1 | tee -a time.txt
这个写法会把测得的real时间同时追加到time.txt里,也打印到终端标准输出。
要是你还需要把脚本的标准错误同时打印到终端和存到<script>.stderr,可以调整重定向逻辑:
TIMEFORMAT='%4R' time <script> 2> >(tee <script>.stderr | tail -n 1 >> time.txt)
因为设置TIMEFORMAT='%4R'后,time命令只会输出一行时间值,而且是标准错误流的最后一行,用tail抓最后一行就能单独把时间存到目标文件里。
内容的提问来源于stack exchange,提问作者Avah
相关产品推荐
相关产品推荐

