首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Shell脚本从' time‘获取实时数据并保存到变量

Shell脚本从' time‘获取实时数据并保存到变量
EN

Stack Overflow用户
提问于 2017-10-15 00:50:11
回答 1查看 321关注 0票数 0

我正在尝试为我的程序创建一个shell脚本,让它花费多次时间,然后除以得到它执行的平均时间。

我尝试的内容如下:

代码语言:javascript
复制
time [./finder -p ARG1 ARG2 ARG3] > /dev/null 2>&1 | grep real | awk '{print $2}'

基本上,我想删除程序的输出,所以我尝试将输出重定向到null。我还想删除time的输出。它几乎不能工作,我还需要将结果保存在一个变量中,这样我就可以在循环中运行它。有没有办法做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-15 00:56:22

注意:"time“可能是一个内置的shell。作为/usr/bin/time或使用env调用,以避免内置,并获得正确的管道和输出行为:

代码语言:javascript
复制
env time bash -c './finder >/dev/null' 2>&1 | awk '$2 == "real" {print $1}'

同样,将1指向null,然后立即将2指向相同的位置也是不好的。

您可以用反引号括起来并赋值给变量,或者对于更简单的标点符号,可以重定向到一个临时文件,然后使用:

代码语言:javascript
复制
ELAPSED=`cat time.txt`

下面是awk正在解析的一些示例输出:

代码语言:javascript
复制
$ env time pwd
/tmp
        0.01 real         0.00 user         0.00 sys

如果您更喜欢-p输出,则可以传递POSIX开关:

代码语言:javascript
复制
$ env time -p pwd
/tmp
real         0.01
user         0.00
sys          0.00

下面是在变量中获取原始时间stderr输出的一种方法:

代码语言:javascript
复制
$ TIME=`env time pwd 2>&1 | tail -1`
$ echo $TIME
0.00 real 0.00 user 0.00 sys
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46747006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档