Ich habe ein Shell-Skript, in dem wir folgende Zeilen if [ -z "$xyz" ]
und haben if [ -n "$abc" ]
, aber ich bin nicht sicher, was ihr Zweck ist. Kann jemand bitte erklären?
Ich habe ein Shell-Skript, in dem wir folgende Zeilen if [ -z "$xyz" ]
und haben if [ -n "$abc" ]
, aber ich bin nicht sicher, was ihr Zweck ist. Kann jemand bitte erklären?
Antworten:
Eine sehr schöne Referenz für bash-Betreiber finden Sie hier . Wenn Sie eine andere Shell verwenden, suchen <my shell> operators
Sie einfach nach und Sie finden alles, was Sie brauchen. In Ihrem speziellen Fall verwenden Sie:
-n
string is not null.
-z
string is null, that is, has zero length
Um zu veranschaulichen:
$ foo="bar";
$ [ -n "$foo" ] && echo "foo is not null"
foo is not null
$ [ -z "$foo" ] && echo "foo is null"
$ foo="";
$ [ -n "$foo" ] && echo "foo is not null"
$ [ -z "$foo" ] && echo "foo is null"
foo is null
man test
oder man [
gibt Ihnen alle Optionen zum Testen des Befehls. In diesem Fall prüft -n, ob der Inhalt von $ abc eine Länge ungleich Null hat, und -z prüft, ob der Inhalt von $ xyz eine Zeichenfolge der Länge Null ist.
man test
(immer?) Enthält die Manpage für die externe Programmversion, die (zumindest für die GNU-coreutils-Version) explizit warnt, dass einige (IME-meisten) Shells eine möglicherweise abweichende integrierte Version haben.