Shell脚本:如何检查变量是否为null

use*_*604 3 string bash shell is-empty

我想检查变量是否为null.

我的代码是:

    list_Data="2018-01-15 10:00:00.000|zQfrkkiabiPZ||04|
            2018-01-15 10:00:00.000|zQgKLANvbRWg||04|
            2018-01-15 10:00:00.000|zQgTEbJjWGjf||01|
            2018-01-15 10:00:00.000|zQgwF1YJLnAT||01|"

    echo "list_Data"

    if [[ -z "list_Data" ]]
    then
    echo "not Empty"
    else
    echo "empty"
    fi
Run Code Online (Sandbox Code Playgroud)

输出是:

2018-01-15 10:00:00.000|zQfrkkiabiPZ||04|
2018-01-15 10:00:00.000|zQgKLANvbRWg||04|
2018-01-15 10:00:00.000|zQgTEbJjWGjf||01|
2018-01-15 10:00:00.000|zQgwF1YJLnAT||01|
empty
Run Code Online (Sandbox Code Playgroud)

变量包含值但我总是空消息的问题请帮忙.

小智 10

您可以在 Bash shell 中使用以下任何一项来确定变量是否具有 NULL 值

my_var="DragonBallz"
if [ -z "$my_var" ]
then
      echo "\$my_var is NULL"
else
      echo "\$my_var is NOT NULL"
fi
Run Code Online (Sandbox Code Playgroud)

(或者)

my_var=""
if test -z "$my_var" 
then
      echo "\$my_var is NULL"
else
      echo "\$my_var is NOT NULL"
fi
Run Code Online (Sandbox Code Playgroud)

(或者)

[ -z "$my_var" ] && echo "NULL"
[ -z "$my_var" ] && echo "NULL" || echo "Not NULL"
Run Code Online (Sandbox Code Playgroud)

(或者)

[[ -z "$my_var" ]] && echo "NULL"
[[ -z "$my_var" ]] && echo "NULL" || echo "Not NULL"
Run Code Online (Sandbox Code Playgroud)

(或者)

var="$1"
if [ ! -n "$var" ]
then
    echo "$0 - Error \$var not set or NULL"
else
    echo "\$var set and now starting $0 shell script..."
fi
Run Code Online (Sandbox Code Playgroud)


Alf*_*lfe 9

if [[ -z "$list_Data" ]]
then
  echo "Empty"
else
  echo "Not empty"
fi
Run Code Online (Sandbox Code Playgroud)

像这样试试。(添加$和切换案例。)


Awa*_*sir 9

我没想到这个解决方案,当上述所有解决方案对我来说都失败时,这个解决方案对我有用

if [[ "$is_always_execute" == null ]];
then
    is_always_execute=false;
fi
Run Code Online (Sandbox Code Playgroud)


Rav*_*h13 6

尝试以下,你应该从改变-z-n如下,并添加$到您的变量太多.

if [[ -n "$list_Data" ]]
then
    echo "not Empty"
else
    echo "empty"
fi
Run Code Online (Sandbox Code Playgroud)

说明:man test页面如下(它检查变量是否具有任何值.如果它有任何值,则条件为TRUE,否则为FALSE.)

   -n STRING
          the length of STRING is nonzero
Run Code Online (Sandbox Code Playgroud)