Câu trả lời hay, và một bài học vô giá;) Chỉ muốn bổ sung bằng một ghi chú.
Loại thử nghiệm nào bạn chọn sử dụng phụ thuộc nhiều vào mã, cấu trúc, môi trường xung quanh, v.v.
Một cách khác có thể là sử dụng một công tắc hoặc case
câu lệnh như trong:
case "$PHONE_TYPE" in
"NORTEL"|"NEC"|"CISCO")
echo "OK"
;;
*)
echo "Phone type must be nortel,cisco or nec"
;;
esac
Là một lưu ý thứ hai, bạn nên cẩn thận bằng cách sử dụng tên biến chữ hoa. Điều này là để ngăn xung đột giữa các biến được giới thiệu bởi hệ thống, mà hầu như luôn luôn là chữ hoa. Như vậy $phone_type
thay vì $PHONE_TYPE
.
Mặc dù điều đó là an toàn, nhưng nếu bạn có thói quen sử dụng tất cả chữ hoa, một ngày nào đó bạn có thể nói IFS="boo"
và bạn đang ở trong một thế giới bị tổn thương.
Nó cũng sẽ làm cho nó dễ dàng hơn để phát hiện đó là những gì.
Không phải là một phải nhưng một mạnh mẽ sẽ xem xét.
Nó cũng có lẽ là một ứng cử viên tốt cho một chức năng. Điều này chủ yếu làm cho mã dễ đọc và bảo trì hơn. Ví dụ:
valid_phone_type()
{
case "$1" in
"NORTEL"|"NEC")
return 0;;
*)
echo "Model $1 is not supported"
return 1;;
esac
}
if ! valid_phone_type "$phone_type"; then
echo "Bye."
exit 1
fi
if [[ ! $PHONE_TYPE =~ ^(NORTEL|NEC|CISCO)$ ]]; then