2011-06-14 36 views

Trả lời

16

Bạn có để lại một không gian xung quanh dấu bằng:

if [ "$A" = "$B" ]; 
then 
    echo 'strings are equal' 
fi 

Edit: Xin lưu ý cũng có dấu ngoặc kép xung quanh các biến. Nếu không có chúng, bạn sẽ gặp rắc rối nếu một trong số chúng trống.

Nếu không, thử nghiệm được hiểu là kiểm tra xem chuỗi "foo = bar" có độ dài> 0 hay không.
Xem man test:

... 
    STRING equivalent to -n STRING 
    -n STRING 
      the length of STRING is nonzero 
    ... 
+0

Đó là cũng đáng chỉ ra rằng bạn đã làm đúng và thêm dấu ngoặc kép xung quanh các biến. Nếu bạn đang so sánh các chuỗi không có dấu ngoặc kép và một chuỗi trống, tập lệnh của bạn sẽ thoát do thử nghiệm không đúng định dạng. –

+0

@Kyle: Vâng, bạn nói đúng. Tôi nên đã đề cập đến thực tế đó. – bmk

7

Bạn đang nghĩ để có các khoảng trống xung quanh bằng nhân vật:

if [ $A = $B ]; 
    ^^ 
     There 

Ngoài ra, bạn nên trích dẫn các biến, như thế này:

if [ "$A" = "$B" ]; 
Các vấn đề liên quan