我希望通过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
我知道上面的脚本中可能存在其他错误,但是当前让我感到困惑的只是捕获程序产生的值。
答案 0 :(得分:3)
这可能会有所帮助:
var=$(./prog)
答案 1 :(得分:3)
不止一种方法,但一种是使用反引号:
VAR=`./prog`