2015-06-21 27 views
2

我正在编写一个C++程序来并行地在文本文件中查找最小数量,但我故意引入了一个竞争条件。运行一个脚本,直到生成一个不同的输出

我现在想运行这个程序,直到我可以显示有不同的输出。很显然,对于这样一个微不足道的问题,输出将会是,一般来说是正确的,但是一旦出现竞争状态的证据,我想停止运行该程序。

我将连续运行的命令是./openMP < numbers.txt

因为我想在bash脚本做什么会是这样的伪代码:

$MIN=output_from_program_on_first_run 
$TEMP=output_from_program_after_first_run 
while [ "$MIN" -eq "$TEMP" ] 
do 
    $TEMP=output_from_program_after_first_run 
done 
echo $TEMP 

我的问题是我怎么可以存储从./openMP < numbers.txt输出到$ MIN和$ TEMP?

感谢, erip

回答

3

首先,在bash变量赋值做与名称一起使用美元符号($)。例如,你应该写

HAS_FOO="true" 

而不是:

$HAS_FOO="true" 

至于用于存储程序的shell变量的标准输出,bash提供two different ways

TEMP=`./openMP < numbers.txt` 

TEMP=$(./openMP < numbers.txt) 

然而,对于一个稍微更安全的旅程:

TEMP="$(./openMP < numbers.txt)" 

,双引号会防止Shell试图如果它包含特殊字符,扩大你的程序的输出,它可以是一个有点小问题贝壳。

+0

显示我对bash脚本知之甚少。它现在正在运行,没有错误! – erip

+0

或者我应该说... *错误*。 – erip

相关问题