我正在编写一个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
答案 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特有的字符,这可能会有点问题。