Tôi hiện đang viết một khung thử nghiệm bash, trong đó trong một hàm thử nghiệm, [[
có thể sử dụng cả các thử nghiệm bash tiêu chuẩn ( ) cũng như các trình so khớp được xác định trước. Đối sánh là trình bao bọc thành '[[' và bên cạnh việc trả về mã trả lại, hãy đặt một số thông báo có ý nghĩa cho biết những gì được mong đợi.
Thí dụ:
string_equals() {
if [[ ! $1 = $2 ]]; then
error_message="Expected '$1' to be '$2'."
return 1
fi
}
Vì vậy, khi một trình so khớp được sử dụng và nó không thành công, thì chỉ khi đó error_message mới được đặt.
Bây giờ, tại một số thời điểm sau đó, tôi kiểm tra xem các thử nghiệm có thành công hay không. Nếu nó thành công, tôi in kỳ vọng màu xanh lá cây, nếu nó không thành công màu đỏ.
Hơn nữa, có thể có một bộ error_message, vì vậy tôi kiểm tra nếu có một thông báo tồn tại, hãy in nó và sau đó hủy đặt nó (vì kiểm tra sau có thể không đặt một error_message
):
if [[ $error_message ]]; then
printf '%s\n' "$error_message"
unset -v error_message
fi
Bây giờ câu hỏi của tôi là, nếu tốt hơn là bỏ đặt biến hoặc chỉ đặt nó thành '', như
error_message=''
Cái nào tốt hơn? Nó thực sự tạo ra sự khác biệt? Hoặc có lẽ tôi nên có một cờ bổ sung cho biết rằng thông báo đã được đặt?
error_message
với bất cứ điều gì khác, tôi sẽ nói rằng nó không quan trọng. Tuy nhiên, tôi nghĩ bạn muốn[[ $error_message ]]
, nếu không, bạn đang kiểm tra xem chuỗi chữ "error_message" có tồn tại hay không.