我编译了一个C++程序,名为code.cpp
。
输出的二进制文件为./code
。
该代码输出几行文本,最后一行表示墙的时间(以秒为单位(。例如:
<some_text>
<more_text>
...
<still_more_text>
0.0009072
对于任何给定的运行时标志集,我想创建一个简单的Bash脚本,用请求的标志运行./code
10次,然后将单行打印到文本文件中。该文件的名称应该与./code
的名称完全相同,例如:
./code -g 12 -v 4 -m -t
将生成一个名为./code -g 12 -v 4 -m -t.txt
的文本文件,其中包含一行表示十次运行的平均值。
以下是我使用Bash和bc:获得的工作解决方案
#!/bin/bash
sum=0.0
c_command=$1
suffix=".txt"
f_name="${c_command} ${suffix}"
for n in {1..10};
do
output=$($c_command)
read -ra arr -d '' <<<"$output"
value=${arr[-1]}
sum=$(bc <<< "scale=10; $sum+$value")
done
avg=$(bc <<< "scale=10; $sum/10")
echo $avg > "${c_command}.txt"
调用二进制文件时,将运行时参数作为脚本的参数:
./script.sh "./code -g 12 -v 4 -m -t"