我有一个很长的单行代码,它输出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
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
然后为真,它就会起作用。