我正在尝试编写脚本以将代码的结果与我已经建立的结果进行比较以进行回归测试

EMP7705

我一直在尝试编写一个bash脚本来运行我的代码,然后将最终输出与以前的运行(在正确的结果下)进行比较,并在return.dat下比较。目的是告诉我代码是否在与之前相同的迭代次数中收敛,并且结果是否位于.dat文件中基准测试结果的0.1%之内。到目前为止,我已经收到了很多语法错误,即使我摆脱了它们,变量reg1,reg2,reg3等也只能将0存储为一个值。

#!/bin/bash
rm *.dat
rm *.vtu
FiniteVolume.serial export FORT_FMT_RECL=250
mv finaloutput.dat regression
cd regression
readarray filecontent < regression_test.dat
echo $filecontent
readarray filecontent2 < finaloutput.dat
echo $filecontent2
((reg1=${filecontent[1]}))
((reg2=${filecontent[2]}))
((reg3=${filecontent[3]}))
((reg4=${filecontent[4]}))
echo reg1
echo $reg1

((exm1=${filecontent2[1]}))
((exm2=${filecontent2[2]}))
((exm3=${filecontent2[3]}))
((exm4=${filecontent2[4]}))

if ((reg1 = exm1)); then
     echo "iteration count is equal" 
elif ((sqrt((reg2- exm2)^2)/reg2 < 1e-1)) ; then
     echo "Lift coefficient error is less than .1 percent"
elif ((sqrt((reg2- exm2)^2)/reg2 > 1e-1)); then
     echo "Lift Coefficient test failed"
elif ((sqrt((reg3- exm3)^2)/reg3 < 1e-1)); then
     echo "Drag coefficient error is less then .1 percent"
elif ((sqrt((reg3- exm3)^2)/reg3 > 1e-1)); then
      echo "Drag Coefficient test failed"
elif ((sqrt((reg4- exm4)^2)/reg4 < 1e-1)); then
     echo "Residual error is less than .1 percent"
elif ((sqrt((reg2- exm2)^2)/reg2 > 1e-1)); then
     echo "Residual test failed"
fi

cd ..
rm *.dat
rm *.vtu

结果如下:

14159 0.39700296920172 9.560746238889790E-002 9.992898637502570E-013
14159 0.39700296920172040 9.56074623888978209E-002 9.99311202935717304E-013
./regression_test.sh: line 11: reg1=: syntax error: operand expected (error token is "=")
./regression_test.sh: line 12: reg2=: syntax error: operand expected  (error token is "=")
./regression_test.sh: line 13: reg3=: syntax error: operand expected (error token is "=")
./regression_test.sh: line 14: reg4=: syntax error: operand expected  (error token is "=")
reg1

./regression_test.sh: line 25: ((: sqrt((reg2- exm2)^2)/reg2 < 1e-1: syntax error in expression (error token is "((reg2- exm2)^2)/reg2 < 1e-1")
./regression_test.sh: line 27: ((: sqrt((reg2- exm2)^2)/reg2 > 1e-1: syntax error in expression (error token is "((reg2- exm2)^2)/reg2 > 1e-1")
./regression_test.sh: line 29: ((: sqrt((reg3- exm3)^2)/reg3 < 1e-1: syntax error in expression (error token is "((reg3- exm3)^2)/reg3 < 1e-1")
./regression_test.sh: line 31: ((: sqrt((reg3- exm3)^2)/reg3 > 1e-1: syntax error in expression (error token is "((reg3- exm3)^2)/reg3 > 1e-1")
./regression_test.sh: line 33: ((: sqrt((reg4- exm4)^2)/reg4 < 1e-1: syntax error in expression (error token is "((reg4- exm4)^2)/reg4 < 1e-1")
./regression_test.sh: line 35: ((: sqrt((reg2- exm2)^2)/reg2 > 1e-1: syntax error in expression (error token is "((reg2- exm2)^2)/reg2 > 1e-1")

如何更改脚本以消除语法错误,并允许变量将要存储读取数据的数组作为元素的值?过去的一天中,我一直在阅读有关bash算术和脚本的内容,但未能获得对执行此操作的最佳方法的清晰解释,因此我们将不胜感激。

汤姆·亨特

bash没有内置的浮点数学运算,也不相信它提供平方根。对于这些,您需要调用一个外部实用程序,例如bc

最好使用其他语言(例如Perl或Python)编写此代码。看来,这已经接近bash无法很好处理的复杂性阈值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我正在尝试编写代码,但遇到java.lang.StringIndexOutOfBoundsException。请检查代码

将列表与列表进行比较以获得与我们正在比较的列表最匹配的列表

在stats :: glm()中,为什么子集自变量给出的结果与我自己对数据自变量进行子集化时的结果不同?

我正在尝试编写脚本,以将/ etc / passwd中的组ID更改为每个用户的名称

有Django的方法可以将测试结果与灯具进行比较吗?

我正在尝试编写代码,以查找矩阵是否为R中的魔术矩阵?

Spark Scala-比较列值,然后将结果与另一列进行比较

如何解决:将bigquery查询的结果与列表进行比较

将分组结果与汇总结果进行比较

RobotFramework-将查询结果与另一个文件的结果进行比较

Oracle将查询结果与表进行比较

我正在尝试编写代码来检查2到1000之间的数字是否是质数

将数据表结果与表单值进行比较

无法将lsb_release结果与Bash中的字符串进行比较

如何将线程的结果与其他变量进行比较

将数据库结果与html表进行比较-Selenium Webdriver-Java

将功能结果与Chai中的API进行比较?

将查询结果与当前用户进行比较

将每个拆分结果与每个类元素进行比较

将 JSON 结果与字符串进行比较

结果与我期望的不同

将 Linq 查询结果与数组进行比较

如何有效地将 Accesss SQL 结果与 SQL Server 结果进行比较?

脚本给我的结果与网站显示的结果不同

我正在尝试编写一个函数 isUniform()

我正在尝试编写损坏脚本,但出现错误,指出无法识别命名空间“Player”

我正在尝试编写一个程序来测试 8 组安全代码的准确率

Laravel 将查询结果与变量进行比较

为什么我的 collatz 函数的结果与我输入大量数字时的结果不同?