2015-06-21 58 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

相關問題