shell 如何使用while循环检查变量是否为空

wfveoks0  于 2023-01-21  发布在  Shell
关注(0)|答案(1)|浏览(289)

我使用下面的代码来检查变量是否为空。
我使用while循环是因为我需要在变量为空时继续循环,当变量被设置为一个值时,循环应该退出。

MR=[]
while [ -z "$MR" ]
do 
    echo "in while loop"
    sleep 10s
    MR="hi"
done

由于某种原因,它根本没有执行。原因是什么?

vof42yt1

vof42yt11#

原因何在?
MR变量不为空,它包含两个字符[]

$ MR=[]
$ echo "$MR"
[]

因为它不为空,[ -z "$MR" ]返回非零值,所以while永远不会执行。
而是将变量设置为空字符串。

MR=
# or, does the same, but for some is more readable:
MR=""
# or
MR=''

相关问题