Tôi có một kịch bản shell nơi chúng tôi có dòng sau if [ -z "$xyz" ]
và 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?
Tôi có một kịch bản shell nơi chúng tôi có dòng sau if [ -z "$xyz" ]
và 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:
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> operators
và 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
man test
hoặ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 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.