<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.
<Trước | Nội dung | Tiếp theo>