从循环内部在while循环测试中更新bash变量?

时间:2020-05-15 18:55:05

标签: loops while-loop global-variables

我有一个很长的行列,它输出truefalse,我想等着true进行进一步处理。 我的until循环可以通过以下方式正常运行:

var=$(very-long|oneliner)
until [[ $var = true ]]; do sleep 5
var=$(very-long|oneliner); done

但是当我想减轻它时:

var=$(very-long|oneliner)
until [[ $var = true ]]; do sleep 5
var=$var; done

当初始$ var为false时失败,因为var之后的do从未像我希望的那样更新。我了解到这是因为循环有时在子外壳中进行,因此var不再是oneliner的输出,而是陷于false。有办法吗?也许第一行是declare -g var=$(very-long|oneliner)(我从没用过,恐怕它传播了,我不知道它在系统中的什么位置),或者是declare -x var=$(very-long|oneliner)

预先感谢提示。

1 个答案:

答案 0 :(得分:1)

简化。确保您的单行出口带有有效代码。

until very-long|oneliner
do sleep 5
done

只要very-long|oneliner返回0,然后返回true,它将起作用。

相关问题