Das [ ... ]
Konstrukt (oder das Äquivalent test ...
) gibt einen Beendigungscode von 0 für wahr oder 1 für falsch zurück, erzeugt jedoch keine Ausgabe und gibt daher $( [ ... ] )
immer eine leere Zeichenfolge zurück. Der zurückgegebene Beendigungscode ist in $?
, r
kann also auf 0 oder 1 gesetzt werden:
[ -z "foo" ]; r=$?
Wenn Sie die Textwerte wollen true
und false
in r
(im Gegensatz zu 0 und 1), dann wird Ihr Ausdruck ist grundsätzlich richtig, aber die folgende ist ein bisschen einfacher:
[ -z "foo" ] && r=true || r=false