【发布时间】:2014-06-16 15:37:44
【问题描述】:
好的,这就是我想要做的:
- 执行命令,同时计时(使用
time) - 获取其输出
- 获取经过的时间
到目前为止,这是我的代码:
for filepath in $files
do
(
output=$(time $filepath &>1)
echo ${output}
)
done
但是,每个命令仍会将其时间输出到屏幕,并且$output 包含命令的输出。
任何想法如何获得它们?
【问题讨论】:
好的,这就是我想要做的:
time)到目前为止,这是我的代码:
for filepath in $files
do
(
output=$(time $filepath &>1)
echo ${output}
)
done
但是,每个命令仍会将其时间输出到屏幕,并且$output 包含命令的输出。
任何想法如何获得它们?
【问题讨论】:
time 将其输出写入stderr 或<file>,如果指定了-o <file> 选项(GNU 和FreeBSD 时间都支持)。所以我认为你不能避免使用(临时)文件来实现目标。您可以使用mktemp 命令在shell 中安全地创建一个临时文件。
【讨论】:
time 程序,而不是bash 的内置命令。 command time $filepath > output.txt 2> time.txt.
你必须捕获标准输入和标准输出。为此,基于Is there a way to redirect time output to file in Linux 中的解决方案,我会说:
{ time command ; } 2>&1
^^^^
redirect stderr to stdin
所以你例如这样做:
$ var=$({ time echo 1 ; } 2>&1 )
$ echo "$var"
1
real 0m0.000s
user 0m0.000s
sys 0m0.000s
【讨论】:
time 结果和程序输出。如果不是,那么这个答案比我的更正确