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



我有一个很长的单行代码,它输出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

false初始$var时它会失败,因为do之后var永远不会像我希望的那样更新。我了解到这是因为在某些时候循环进入子外壳,然后var不再是单行的输出,而是卡在 false 上。有没有办法做到这一点?也许第一行会declare -g var=$(very-long|oneliner)(我从来没有用过这个,担心它会传播我不知道在系统中的哪个位置(,还是declare -x var=$(very-long|oneliner)

提前感谢您的提示。

简化。确保您的单行代码以有效的代码退出。

until very-long|oneliner
do sleep 5
done

只要very-long|oneliner返回0然后为真,它就会起作用。

相关内容

  • 没有找到相关文章

最新更新