[ $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_Namebằng với chuỗi 1.
[ "$Server_Name" -eq 1 ]
kiểm tra là $Server_Namebằ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_Namekhô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 ...