bash - variable - linux shell if string is empty




Null und leerer String Vergleich in Unix Bash Shell Script (2)

Ich setze keine Werte für $ pass_tc11; also gibt es beim Echo null zurück. Wie vergleicht man es in der if-Klausel?

Hier ist mein Code. Ich möchte nicht, dass "Hallo" gedruckt wird ...

-bash-3.00$ echo $pass_tc11

-bash-3.00$ if [ "pass_tc11" != "" ]; then
> echo "hi"
> fi
hi
-bash-3.00$

Beachten Sie, dass Sie die Variable nicht korrekt verwenden:

if [ "pass_tc11" != "" ]; then
#     ^
#     missing $

Wie auch immer, um zu überprüfen, ob eine Variable leer ist oder nicht, können Sie -z -> die Zeichenfolge ist leer:

if [ ! -z "$pass_tc11" ]; then
   echo "hi, I am not empty"
fi

oder -n -> die Länge ist nicht Null:

if [ -n "$pass_tc11" ]; then
   echo "hi, I am not empty"
fi

Vom man test :

-z STRING

Die Länge von STRING ist null

-n STRING

Die Länge von STRING ist ungleich Null

Proben:

$ [ ! -z "$var" ] && echo "yes"
$

$ var=""
$ [ ! -z "$var" ] && echo "yes"
$

$ var="a"
$ [ ! -z "$var" ] && echo "yes"
yes

$ var="a"
$ [ -n "$var" ] && echo "yes"
yes

Fedorqui hat eine funktionierende Lösung, aber es gibt einen anderen Weg, um das Gleiche zu tun.

Chock wenn eine Variable gesetzt ist

#!/bin/bash
amIEmpty='Hello'
# This will be true if the variable has a value
if [ $amIEmpty ]; then
    echo 'No, I am not!';
fi

Oder um zu überprüfen, dass eine Variable leer ist

#!/bin/bash      
amIEmpty=''
# This will be true if the variable is empty
if [ ! $amIEmpty ]; then
    echo 'Yes I am!';
fi

tldp.org hat eine gute Dokumentation über if in bash:
http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html





unix