Skrip shell: opsi -z dan -n dengan if

55

Saya memiliki skrip shell tempat kami mengikuti baris if [ -z "$xyz" ]dan if [ -n "$abc" ], tetapi saya tidak yakin apa tujuan mereka. Adakah yang bisa menjelaskannya?

pengguna3173953
sumber

Jawaban:

66

Anda dapat menemukan referensi yang sangat bagus untuk operator bash di sini . Jika Anda menggunakan shell yang berbeda, cari saja <my shell> operatorsdan Anda akan menemukan semua yang Anda butuhkan. Dalam kasus khusus Anda, Anda menggunakan:

-n
   string is not null.

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

Menggambarkan:

$ 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
terdon
sumber
3

man testatau man [akan memberi Anda semua opsi untuk menguji perintah. Dalam kasus ini, -n sedang menguji untuk melihat apakah konten $ abc memiliki panjang non-nol dan -z menguji untuk melihat apakah konten $ xyz adalah string dengan panjang nol.

selesai24
sumber
man [tidak bekerja untuk saya di GNU bash, versi 4.1.2 (1) -release (x86_64-redhat-linux-gnu). Tapi +1 untuk uji pria.
andrew lorien
1
Catatan man test(selalu?) Memberikan halaman manual untuk versi program eksternal, yang (untuk versi GNU-coreutils setidaknya) secara eksplisit memperingatkan bahwa beberapa (kebanyakan IME) shell memiliki versi bawaan yang mungkin berbeda.
dave_thompson_085