Bash 脚本到 运行 C++ 二进制 N 次并将平均值输出到文件

Bash script to run C++ binary N times and output average to file

我有一个已编译的 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=
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"