У меня есть сценарий оболочки, где у нас есть следующие строки if [ -z "$xyz" ]
и if [ -n "$abc" ]
, но я не уверен, какова их цель. Кто-нибудь может объяснить, пожалуйста?
У меня есть сценарий оболочки, где у нас есть следующие строки if [ -z "$xyz" ]
и if [ -n "$abc" ]
, но я не уверен, какова их цель. Кто-нибудь может объяснить, пожалуйста?
Ответы:
Вы можете найти очень хороший справочник для операторов bash здесь . Если вы используете другую оболочку, просто найдите, <my shell> operators
и вы найдете все, что вам нужно. В вашем конкретном случае вы используете:
-n
string is not null.
-z
string is null, that is, has zero length
Проиллюстрировать:
$ 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
или man [
даст вам все возможности для проверки команды. В этом случае -n проверяет, имеет ли содержимое $ abc ненулевую длину, а -z проверяет, является ли содержимое $ xyz строкой нулевой длины.
man test
(всегда?) Дает справочную страницу для версии внешней программы, которая (по крайней мере для версии GNU-coreutils) явно предупреждает, что некоторые (большинство IME) оболочки имеют встроенную версию, которая может отличаться.