[ $Server_Name=1 ]
không hoạt động như dự định vì cú pháp bên trong dấu ngoặc đơn không đặc biệt đối với Bash. Như thường lệ, biến $Server_Name
được thay thế bằng 1, vì vậy tất cả lệnh test ( [
) nhìn thấy là một đối số duy nhất: chuỗi 1=1
. Vì sting đó có độ dài khác không, kiểm tra trả về giá trị true .
Đối với hệ vỏ tương thích POSIX, bạn có thể sử dụng các lệnh kiểm tra sau :
[ "$Server_Name" = 1 ]
kiểm tra là $Server_Name
bằng với chuỗi 1
.
[ "$Server_Name" -eq 1 ]
kiểm tra là $Server_Name
bằng với số 1
, nghĩa là, nó thực hiện so sánh số thay vì so sánh chuỗi.
Giá trị trả về của hai lệnh sẽ khác nhau, ví dụ, nếu bạn xác định Server_Name=01
. Cái đầu tiên sẽ trả về false, cái thứ hai sẽ trả về true.
Lưu ý rằng nếu khả năng tồn tại là biến $Server_Name
không được xác định, nó phải được trích dẫn hoặc kiểm tra sẽ hiển thị lỗi khi được gọi.
if [ ! "x$var" = "x" ]; then\n if [ $var -eq 1 ]; then ...