Ich versuche, das folgende Shell-Skript auszuführen, das überprüfen soll, ob eine Zeichenfolge weder Leerzeichen noch leer ist. Allerdings bekomme ich für alle 3 Saiten die gleiche Ausgabe. Ich habe versucht, die "[[" - Syntax ebenfalls zu verwenden, aber ohne Erfolg.Überprüfen Sie, ob der String im Shell-Skript leer oder leer ist
Hier ist mein Code:
str="Hello World"
str2=" "
str3=""
if [ ! -z "$str" -a "$str"!=" " ]; then
echo "Str is not null or space"
fi
if [ ! -z "$str2" -a "$str2"!=" " ]; then
echo "Str2 is not null or space"
fi
if [ ! -z "$str3" -a "$str3"!=" " ]; then
echo "Str3 is not null or space"
fi
ich die folgende Ausgabe bin immer:
# ./checkCond.sh
Str is not null or space
Str2 is not null or space
Vielen Dank, es funktioniert. Aber ich frage mich, warum die Zuweisung kein Leerzeichen verwendet, während ein Vergleich dies tut. –
^^ Es ist Syntax. Das erste Wort in der Befehlszeile ist der Befehl und nachfolgende sind Argumente. 'var = value [Befehl [args]]' ist die Syntax, in der einer Variablen ein Wert zugewiesen wird. zum Vergleich: '['/usr/bin/['] ist der Befehl & es erfordert var1,! = & var2 als 3 separate Argumente. var1! = var2 ist ein einzelnes Argument. – anishsane
@anishsane Vielen Dank für das Detail, ich bekomme es jetzt =) –