如何将C ++输出捕获到Bash变量?

时间:2018-06-01 00:58:56

标签: c++ bash

我希望通过Bash编译和运行C ++程序,然后将cout(将是一个int)生成的输出捕获到Bash脚本中的变量。

我目前能够将输出定向到如下文本文件:

./prog >> output.txt

我的研究让我想到了这一点,它似乎创造了一个空字符串:

output=$(./prog) | bc -l

如果它是相关的,我试图捕获这个值,以便我可以平均多次执行我的程序的输出。这是我目前的整个剧本:

count=1
while [ $count -le 8192 ]
do
    sum=0
    arraysize=$(( $count * 1024 ))
    g++-7 prog.cpp -DGLOBAL=${arraysize} -DLOCAL=32 -o prog -lm -fopenmp -framework OpenCL
    for try in {0..9}
    do
        output=$(./prog) | bc -l
        echo ${output} # this line appears to print an empty string
        sum=$(( (sum + output) ))
    done
    echo ${sum / 10}
    count=$(( $count * 2 ))
done

我知道上面的脚本中可能存在其他错误,但是当前让我感到困惑的只是捕获程序产生的值。

2 个答案:

答案 0 :(得分:3)

这可能会有所帮助:

var=$(./prog)

答案 1 :(得分:3)

不止一种方法,但一种是使用反引号:

VAR=`./prog`