Mam skrypt powłoki, w którym mamy następujące wiersze if [ -z "$xyz" ]
i if [ -n "$abc" ]
, ale nie jestem pewien, jaki jest ich cel. Czy ktoś może wyjaśnić?
Mam skrypt powłoki, w którym mamy następujące wiersze if [ -z "$xyz" ]
i if [ -n "$abc" ]
, ale nie jestem pewien, jaki jest ich cel. Czy ktoś może wyjaśnić?
Odpowiedzi:
Można znaleźć bardzo ładny punkt odniesienia dla operatorów bash jest tutaj . Jeśli używasz innej powłoki, po prostu wyszukaj, <my shell> operators
a znajdziesz wszystko, czego potrzebujesz. W twoim konkretnym przypadku używasz:
-n
string is not null.
-z
string is null, that is, has zero length
Ilustrować:
$ 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
lub man [
da ci wszystkie opcje przetestowania polecenia. W tym przypadku -n sprawdza, czy zawartość $ abc ma niezerową długość, a -z sprawdza, czy zawartość $ xyz jest łańcuchem o zerowej długości.
man test
(zawsze?) Podaje stronę podręcznika dla wersji programu zewnętrznego, która (przynajmniej dla wersji GNU-coreutils) wyraźnie ostrzega, że niektóre (większość IME) powłoki mają wbudowaną wersję, która może być inna.