实验返回解析器错误的特定输入

时间:2019-04-28 18:58:03

标签: bash macos shell floating-point bc

#!/bin/bash
for tracelength in 50 100 150 200 250 300 350 400 450 500 ; do
    step=0.2
    short=0
    long=1
    for i in {1..4}; do
    ratio=0
        for j in {1..4}; do
                declare -a listofresults
                echo "$tracelength $short $long $ratio" >> results.csv
                python3 main.py "$tracelength" "$short" "$long" "$ratio">file.smt2
                chmod 775 file.smt2
                declare total=0
                declare m=0
                for repeat in {1..10}; do
                    executiontime=$(timeout 500 gtime -f "%U" /Users/ouafaelachhab/Desktop/SemanticLocality/optimathsat-1.6.2-macos-64-bit/bin/optimathsat < file.smt2 2>&1 >/dev/null)
                    echo "$executiontime"
                    total=$(echo "scale=2; ($total) + ($executiontime)" | bc) #echo $(bc <<< "scale=2; $total/100")
                    echo "$total"
                    let "m=m+1"
                    echo "m=$m"
                done
                echo $(bc <<< "scale=2; ($total)/10") >> results.csv
                ratio=$(echo "scale=10; ($ratio) + ($step)" | bc) #float points arithmetics are different
            done
            short=$(echo "scale=10; ($short) + ($step)" | bc)
            long=$(echo "scale=10; ($long) - ($step)" | bc)
        done
    done

我基本上只是在运行一个实验,在该实验中运行带有变量输入的文件。该代码适用于某些值,并且仅对我有用:

(standard_in) 1: parse error

在我的结果文件中,这是我的输出:

50 0 1 0
21.82
50 0 1 .2
27.08
50 0 1 .4
40.89
50 0 1 .6

我正在运行的实验总是在相同的输入值处停止(最后一个打印在输出文件中),然后从那里输入所有解析器错误!为什么这样做呢?以及如何解决?我已经尝试过针对类似问题(与bc相关)找到的多种解决方案,但都无济于事。

1 个答案:

答案 0 :(得分:0)

我怀疑这与以下行有关:


executiontime=$(timeout 500 gtime -f "%U" /Users/ouafaelachhab/Desktop/SemanticLocality/optimathsat-1.6.2-macos-64-bit/bin/optimathsat &1 >/dev/null)

当我用

更改代码时

executiontime =“问题”

我将其作为输出(注意如何逐行打印I S S U E)


m=3
ISSUE
(standard_in) 1: parse error (standard_in) 1: illegal character: I (standard_in) 1: illegal character: S (standard_in) 1: illegal character: S (standard_in) 1: illegal character: U