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

Bash 运行脚本,直到生成不同的输出 我编写了一个C++程序来查找文本文件中的最小数量,但我故意引入了一个竞争条件。,bash,Bash,我现在想运行这个程序,直到我可以显示有一个不同的输出。显然,对于这样一个小问题,输出通常是正确的,但是一旦有证据表明存在争用条件,我想停止运行程序 我将持续运行的命令是/openMP

我现在想运行这个程序,直到我可以显示有一个不同的输出。显然,对于这样一个小问题,输出通常是正确的,但是一旦有证据表明存在争用条件,我想停止运行程序

我将持续运行的命令是
/openMP

我想在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
的输出存储到$MIN和$TEMP中

谢谢,
erip

首先,
bash
中的变量赋值不使用美元符号(
$
)和名称。比如你应该写

HAS_FOO="true"
而不是:

$HAS_FOO="true"
对于在shell变量中存储程序的标准输出,
bash
提供:

TEMP=`./openMP

TEMP=$(./openMP
但是,为了让旅程稍微安全一些:

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

双引号将阻止shell尝试扩展程序的输出,如果它包含shell特有的字符,这可能会有点问题。

显示了我对bash脚本的了解有多少。它现在正在运行,没有错误!
TEMP=$(./openMP < numbers.txt)
TEMP="$(./openMP < numbers.txt)"