OnWorks Linux và Windows Online WorkStations

Logo

Lưu trữ trực tuyến miễn phí cho máy trạm

<Trước | Nội dung | Tiếp theo>

Phiên bản thử nghiệm hiện đại hơn

Các phiên bản gần đây của bash bao gồm một lệnh ghép hoạt động như một sự thay thế nâng cao cho thử nghiệm. Nó sử dụng cú pháp sau:

[[ biểu hiện ]]

ở đâu, như thử nghiệm, biểu hiện là một biểu thức đánh giá kết quả đúng hoặc sai. Các [[]] lệnh rất giống với thử nghiệm (nó hỗ trợ tất cả các biểu thức của nó), nhưng


thêm một biểu thức chuỗi mới quan trọng:

chuỗi1 =~ biểu thức chính quy

trả về true nếu chuỗi1 được so khớp bởi biểu thức chính quy mở rộng biểu thức chính quy. Điều này mở ra rất nhiều khả năng để thực hiện các tác vụ như xác thực dữ liệu. Trong ví dụ trước đó của chúng tôi về các biểu thức số nguyên, tập lệnh sẽ không thành công nếu hằng INT chứa bất kỳ thứ gì ngoại trừ một số nguyên. Tập lệnh cần một cách để xác minh rằng hằng số có chứa một số nguyên. Sử dụng [[]] với =~ toán tử biểu thức chuỗi, chúng tôi có thể cải thiện tập lệnh theo cách này:



#! / bin / bash


# test-integer2: đánh giá giá trị của một số nguyên.


INT = -5


if [["$ INT" = ~ ^ -? [0-9] + $]]; sau đó

nếu [$ INT -eq 0]; sau đó echo "INT bằng không."

khác

nếu [$ INT -lt 0]; sau đó echo "INT là âm."

khác

echo "INT là tích cực."

fi

if [$ ((INT% 2)) -eq 0]; thì echo "INT là chẵn."

khác

echo "INT là số lẻ."

fi

fi

khác

echo "INT không phải là số nguyên." > & 2 lối ra 1

fi

#! / bin / bash


# test-integer2: đánh giá giá trị của một số nguyên.


INT = -5


if [["$ INT" = ~ ^ -? [0-9] + $]]; sau đó

nếu [$ INT -eq 0]; sau đó echo "INT bằng không."

khác

nếu [$ INT -lt 0]; sau đó echo "INT là âm."

khác

echo "INT là tích cực."

fi

if [$ ((INT% 2)) -eq 0]; thì echo "INT là chẵn."

khác

echo "INT là số lẻ."

fi

fi

khác

echo "INT không phải là số nguyên." > & 2 lối ra 1

fi


Bằng cách áp dụng biểu thức chính quy, chúng tôi có thể giới hạn giá trị của INT chỉ các chuỗi bắt đầu bằng dấu trừ tùy chọn, theo sau là một hoặc nhiều chữ số. Khám phá này cũng loại bỏ khả năng có các giá trị trống.

Một tính năng được bổ sung khác của [[]] est que le == toán tử hỗ trợ khớp mẫu giống như cách mở rộng tên đường dẫn. Ví dụ:



[tôi @ linuxbox ~] $ FILE = foo.bar

[tôi @ linuxbox ~] $ FILE = foo.bar

Phiên bản thử nghiệm hiện đại hơn


[tôi @ linuxbox ~] $ if [[$ FILE == foo. *]]; sau đó

> echo "$ FILE khớp với mẫu 'foo. *'"

> fi

foo.bar khớp với mẫu 'foo. *'

[tôi @ linuxbox ~] $ if [[$ FILE == foo. *]]; sau đó

> echo "$ FILE khớp với mẫu 'foo. *'"

> fi

foo.bar khớp với mẫu 'foo. *'


Điều này làm cho [[]] hữu ích để đánh giá tên tệp và đường dẫn.


Điện toán đám mây hệ điều hành hàng đầu tại OnWorks: