我想通过Bash编译并运行一个C++程序,然后将cout
(将是一个整数)产生的输出捕获到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
我知道上面的脚本中可能还有其他错误,但目前让我感到困惑的是,它只是捕获了程序所产生的价值。
发布于 2018-06-01 09:04:19
有多种方法,但其中一种是使用反引号字符:
VAR=`./prog`
发布于 2018-06-01 09:03:32
以下是可能会有所帮助的内容:
var=$(./prog)
https://stackoverflow.com/questions/50634725
复制相似问题