Shell scripting: tùy chọn -z và -n với if


54

Tôi có một kịch bản shell nơi chúng tôi có dòng sau if [ -z "$xyz" ]if [ -n "$abc" ], nhưng tôi không chắc chắn mục đích của họ là gì. Bất cứ ai có thể giải thích?

Câu trả lời:


64

Bạn có thể tìm thấy một tài liệu tham khảo rất hay cho các nhà khai thác của bash tại đây . Nếu bạn đang sử dụng một shell khác, chỉ cần tìm kiếm <my shell> operatorsvà bạn sẽ tìm thấy mọi thứ bạn cần. Trong trường hợp cụ thể của bạn, bạn đang sử dụng:

-n
   string is not null.

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

Để minh họa:

$ 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 testhoặc man [sẽ cung cấp cho bạn tất cả các tùy chọn để kiểm tra lệnh. Trong trường hợp này, -n đang kiểm tra xem nội dung của $ abc có độ dài khác không và -z đang kiểm tra xem nội dung của $ xyz có phải là chuỗi có độ dài không.


man [không hoạt động với tôi trong GNU bash, phiên bản 4.1.2 (1) -release (x86_64-redhat-linux-gnu). Nhưng +1 cho bài kiểm tra người đàn ông.
rút lorien

1
Lưu ý man test(luôn luôn?) Cung cấp trang man cho phiên bản chương trình bên ngoài, mà (ít nhất là đối với phiên bản GNU-coreutils) cảnh báo rằng một số shell (hầu hết IME) có phiên bản dựng sẵn có thể khác.
dave_thndry_085
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.