我试图运行一个脚本来运行我用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次,但我不知道如何将用户时间放入数组并将其打印到文件中。
答案 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
的输出。