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

Loops 是否从循环内更新while循环测试中的bash变量?,loops,while-loop,global-variables,Loops,While Loop,Global Variables,我有一个很长的一行程序,它输出true或false,我想等待它成为true以进一步处理。 我的直到循环以这种方式正常工作: 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 当初

我有一个很长的一行程序,它输出
true
false
,我想等待它成为
true
以进一步处理。 我的
直到
循环以这种方式正常工作:

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
时,它会失败,因为
do
之后的
var
从未像我希望的那样更新。我了解到这是因为在某个点上,循环进入子shell,然后
var
不再是oneliner的输出,而是被固定为false。有办法吗?也许第一行是
declare-gvar=$(很长的|一行)
(我从来没有用过这个,我担心它会扩散到系统中的什么地方),或者
declare-xvar=$(很长的|一行)


提前感谢您的提示。

简化。确保单行程序退出时带有有效代码

until very-long|oneliner
do sleep 5
done

只要
very long | oneliner
返回
0
然后为true,它就会工作。

谢谢Paul,但我不明白:oneliner的结尾是awk,它搜索文件中的特定行并输出最后一个字,false或true,然后它总是以0退出。即使我开着它去了一个找不到真假的地方。。。好的,我这样做了,在
grep
的帮助下,得到了一个可靠的0 | 1退出代码。在awk的帮助下,我只能在一周内阅读优秀的gawk手册:
,直到[[`$verylongcurl/command.org | awk-v DID=$DevID'$0~ DID,/}/{if($0~/online/)print};grep'\'online\':true,`];做睡眠5;完成