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

use*_*104 3 bash shell

我正在使用以下代码来检查变量是否为空。

我使用 while 循环,因为我需要在变量为空时继续循环。当变量被设置为一个值时,循环应该退出。

MR=[]
while [ -z "$MR" ]
do 
    echo "in while loop"
    sleep 10s
    MR="hi"
done 
Run Code Online (Sandbox Code Playgroud)

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

Kam*_*Cuk 5

是什么原因?

MR变量不为空,它包含两个字符[]

$ MR=[]
$ echo "$MR"
[]
Run Code Online (Sandbox Code Playgroud)

因为它不为空,[ -z "$MR" ]返回非零,所以while永远不会被执行。

而是将变量设置为空字符串。

MR=
# or, does the same, but for some is more readable:
MR=""
# or
MR=''
Run Code Online (Sandbox Code Playgroud)