如何编写脚本多次运行程序并将时间存储在文件中?

时间:2019-06-08 04:54:19

标签: c bash

我试图运行一个脚本来运行我用C编写的程序,这只是一个简单的排序程序,可以将其与Unix中的内置函数进行比较。我想将用户时间从sort(unix)和我的sort函数中抽出100次,并将其放在excel,csv文件中以比较算法。

当我手动运行它时,我的函数和sort函数都可以工作,但是我不知道如何编写代码以自动执行此过程100次。

#!/bin/sh
for i in {1..100}
do
     for t in 01
     do
     echo ===Test $t ====
     time sort -n <tests/$t > tests/$t.expected
     time ./useIntList <tests/$t> tests/$t.observed
     done
done
rm tests/*.expected tests/*.obsereved

我使程序运行了100次,但我不知道如何将用户时间放入数组并将其打印到文件中。

1 个答案:

答案 0 :(得分:2)

time将其输出写入stderr,而不是stdout。它也是一个内置的shell,它在定时之后执行命令,包括I / O重定向。因此,您需要将time命令放在一个块中,然后重定向到该块之外。

您还应该使用#!/bin/bash。像{1..100}这样的语法是bash扩展名,当您使用#!/bin/sh时可能不可用。

#!/bin/sh
for i in {1..100}
do
     for t in 01
     do
     echo ===Test $t ====
     { time sort -n <tests/$t > tests/$t.expected; } 2>tests/$t.time.expected
     { time ./useIntList <tests/$t> tests/$t.observed; } 2>tests/$t.time.observed
     done
done
rm tests/*.expected tests/*.obsereved

*.time.*文件将包含time的输出。