Kabuk komut dosyası: -z ve -n seçenekleri ile


53

Ben şu satırları bir kabuk var if [ -z "$xyz" ]ve if [ -n "$abc" ], ama onların amacı ne olduğundan emin değilim. Birisi lütfen açıklayabilir mi?

Yanıtlar:


63

Bash operatörleri için çok güzel bir referans burada bulabilirsiniz . Farklı bir kabuk kullanıyorsanız, sadece arayın <my shell> operatorsve ihtiyacınız olan her şeyi bulacaksınız. Özel bir durumda, kullanıyorsunuz:

-n
   string is not null.

-z
  string is null, that is, has zero length

Göstermek için:

$ 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 testveya man [size komutu test etmek için tüm seçenekleri verecektir. Bu durumda, -n, $ abc içeriğinin sıfır olmayan bir uzunluğa sahip olup olmadığını görmek için test eder ve -z, $ xyz içeriğinin sıfır uzunluklu bir dize olup olmadığını görmek için test eder.


adam [benim için GNU bash'ında çalışmıyor, sürüm 4.1.2 (1) - yeniden yayın (x86_64-redhat-linux-gnu). Ama erkek testi için +1.
andrew lorien,

1
Not man test(her zaman?) Harici program sürümü için man sayfası verir; (en azından GNU-coreutils sürümü için), bazı (çoğu IME) merminin farklı olabilecek yerleşik bir sürümüne sahip olduğu konusunda açıkça uyarır.
dave_thompson_085
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.