Wenn ich die folgende Zeile ausführe
test -n && echo not empty
es wird "nicht leer" gedruckt. Dies tritt auf, wenn Sie eine leere Variable haben und auf Nicht-Leere testen, während Sie vergessen, den Wert anzugeben:
VAR=
test -n $VAR && echo wrong 1
test -n "$VAR" && echo wrong 2
Ist das erwartetes Verhalten?
[[ ... ]]ist nicht dasselbe,[ ... ]das das gleiche Verhalten zeigt wietestund die Funktion, auf die inman bash... Bezug genommen wird . Innerhalb von[[ ... ]]Variablen muss es nicht sein "$ quote", um als Variable erkannt zu werden (dh als Argument für[[) ... Dies läuft auf einen einfachen Fall hinaus: Die Variable wurde nicht in Anführungszeichen gesetzt und sollte es auch gewesen sein.