我有一个很长的行列,它输出true
或false
,我想等着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)
?
预先感谢提示。
答案 0 :(得分:1)
简化。确保您的单行出口带有有效代码。
until very-long|oneliner
do sleep 5
done
只要very-long|oneliner
返回0
,然后返回true,它将起作用。