运行脚本,直到生成不同的输出

时间:2015-06-21 18:40:10

标签: bash

我正在编写一个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

1 个答案:

答案 0 :(得分: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尝试扩展程序的输出,如果它包含shell特有的字符,这可能会有点问题。