Сценарії оболонки: -z та -n варіанти з if


54

У мене є скрипт , де ми маємо такі рядки if [ -z "$xyz" ]і if [ -n "$abc" ], але я не впевнений , що їх мета. Хто-небудь може пояснити, будь ласка

Відповіді:


64

Ви можете знайти дуже хороші посилання для операторів в 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

3

man testабо man [дасть вам усі варіанти тестування команди. У цьому випадку -n перевіряє, чи має вміст $ abc ненульову довжину, а -z перевіряє, чи вміст $ xyz є рядком нульової довжини.


man [не працює для мене в GNU bash, версія 4.1.2 (1) -release (x86_64-redhat-linux-gnu). Але +1 для людини тест.
andrew lorien

1
Примітка man test(завжди?) Дає головну сторінку для зовнішньої програми, яка (принаймні для версії GNU-coreutils) явно попереджає, що деякі (більшість IME) оболонок мають вбудовану версію, яка може бути різною.
dave_thompson_085
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.