我使用下面的代码来检查变量是否为空。我使用while循环是因为我需要在变量为空时继续循环,当变量被设置为一个值时,循环应该退出。
MR=[] while [ -z "$MR" ] do echo "in while loop" sleep 10s MR="hi" done
由于某种原因,它根本没有执行。原因是什么?
vof42yt11#
原因何在?MR变量不为空,它包含两个字符[和]。
MR
[
]
$ MR=[] $ echo "$MR" []
因为它不为空,[ -z "$MR" ]返回非零值,所以while永远不会执行。而是将变量设置为空字符串。
[ -z "$MR" ]
while
MR= # or, does the same, but for some is more readable: MR="" # or MR=''
1条答案
按热度按时间vof42yt11#
原因何在?
MR
变量不为空,它包含两个字符[
和]
。因为它不为空,
[ -z "$MR" ]
返回非零值,所以while
永远不会执行。而是将变量设置为空字符串。